我正在尝试构建基本的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进行了尝试,但在某个地方读取了根小部件,它总是和应用程序一样大。如何声明应用程序的大小?还是布局?您将如何执行类似对话框的操作?
也许我缺少一些非常基本的东西,但是我似乎无法弄清楚。
编辑:这是我所看到的。
由于您的根窗口小部件不是布局(您SublimeLauncher继承了Widget),因此它不会设置其子级的大小/位置。因此,您FloatLayout有默认值,因为您也不会手动覆盖它们。
SublimeLauncher
Widget
FloatLayout
pos: 0, 0 size: 100, 100
这些默认值当然会约束子项,因为会FloatLayout根据其size_hint属性来约束其大小。
正如Nykakin所指出的,您想给他们更多的空间。
另外,由于文本大于标签(您也未设置halign和text_size),因此其纹理位于标签中心,因此屏幕的某些部分不在屏幕上。您想看看kivy / examples / widgets / textalign.py