6

基本的なKivyアプリを構築しようとしています. 基本的な要素を追加してアプリを実行すると、すべての要素が左下隅に詰め込まれます。Android と Linux ではこのように表示されます。

Main.py:

from kivy.app import App
from kivy.uix.widget import Widget

class SublimeLauncher(Widget):
    pass

class SublimeLauncherApp(App):
    def build(self):
        return SublimeLauncher()

if __name__ == "__main__":
    SublimeLauncherApp().run()

sublimelauncher.kv:

#:kivy 1.2.0
<SublimeLauncher>:
    FloatLayout:
        BoxLayout:
            orientation: 'vertical'
            spacing: 10
            Label:
                text: "Enter the path to the folder to open.\nPress OK if you would like to open without a directory"
            TextInput:
                id: folderpath
            Button:
                text: 'OK'

最初は BoxLayout だけで試してみましたが、どこかでルート ウィジェットが常にアプリと同じくらい大きいことを読みました。アプリのサイズを宣言するにはどうすればよいですか? それともレイアウト?ダイアログ ボックスのようなことを行うにはどうすればよいでしょうか。

多分私は非常に基本的な何かを見逃していますが、それを理解できないようです.

編集:ここに私が見ているものがあります..

ここに画像の説明を入力

4

3 に答える 3

5

レイアウトのデフォルト サイズは 100x100 ピクセルです。色を付けてみて、どのくらいのスペースが必要かを確認できます。

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.lang import Builder

kv = '''
<SublimeLauncher>:
    BoxLayout:
        canvas:
            Color:
                rgb: 1, 0, 0
            Rectangle:
                size: self.size
        orientation: 'vertical'
        spacing: 10
        Label:
            text: "Enter the path to the folder to open.\\nPress OK if you would like to open without a directory"
        TextInput:
            id: folderpath
        Button:
            text: 'OK'
'''
Builder.load_string(kv)

class SublimeLauncher(Widget):
    pass

class SublimeLauncherApp(App):
    def build(self):
        return SublimeLauncher()

if __name__ == "__main__":
    SublimeLauncherApp().run()

デフォルト以外のサイズの設定:

kv = '''
<SublimeLauncher>:
    BoxLayout:
        size: 250, 250
        canvas:
            Color:
                rgb: 1, 0, 0
            Rectangle:
                size: self.size
        orientation: 'vertical'
        spacing: 10
        Label:
            text: "Enter the path to the folder to open.\\nPress OK if you would like to open without a directory"
        TextInput:
            id: folderpath
        Button:
            text: 'OK'
'''
Builder.load_string(kv)

フルスペースを取る:

kv = '''
<SublimeLauncher>:
    BoxLayout:
        size: root.size
        canvas:
            Color:
                rgb: 1, 0, 0
            Rectangle:
                size: self.size
        orientation: 'vertical'
        spacing: 10
        Label:
            text: "Enter the path to the folder to open. \\nPress OK if you would like to open without a directory"
        TextInput:
            id: folderpath
        Button:
            text: 'OK'
'''
Builder.load_string(kv)
于 2013-10-07T05:06:21.433 に答える
4

ルート ウィジェットはレイアウトではないため ( SublimeLauncherinheritを作成しましたWidget)、子のサイズ/位置を設定しません。FloatLayout手動でオーバーライドしないため、デフォルトがあります。

pos: 0, 0
size: 100, 100

もちろん、これらのデフォルトはFloatLayout、 size_hint プロパティに基づいてサイズが制限されるため、子を制限します。

Nykakin が指摘したように、より多くのスペースを与えたいと考えています。

また、テキストがラベルよりも大きいため (halign と text_size も設定していません)、そのテクスチャはラベルの中央に配置されるため、一部が画面からはみ出します。kivy/examples/widgets/textalign.py を見てみたい

于 2013-10-07T09:49:34.017 に答える