一尘不染

Kivy-基本应用程序具有奇怪的对齐方式

python

我正在尝试构建基本的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进行了尝试,但在某个地方读取了根小部件,它总是和应用程序一样大。如何声明应用程序的大小?还是布局?您将如何执行类似对话框的操作?

也许我缺少一些非常基本的东西,但是我似乎无法弄清楚。

编辑:这是我所看到的。

在此处输入图片说明


阅读 204

收藏
2021-01-20

共1个答案

一尘不染

由于您的根窗口小部件不是布局(您SublimeLauncher继承了Widget),因此它不会设置其子级的大小/位置。因此,您FloatLayout有默认值,因为您也不会手动覆盖它们。

pos: 0, 0
size: 100, 100

这些默认值当然会约束子项,因为会FloatLayout根据其size_hint属性来约束其大小。

正如Nykakin所指出的,您想给他们更多的空间。

另外,由于文本大于标签(您也未设置halign和text_size),因此其纹理位于标签中心,因此屏幕的某些部分不在屏幕上。您想看看kivy /
examples / widgets / textalign.py

2021-01-20