【发布时间】:2016-03-14 18:49:37
【问题描述】:
我正在尝试制作一个简单的应用程序来监控一些 IO 并有一个按钮屏幕。我正在开始使用 kivy 作为我的 gui 开发来了解屏幕如何工作的框架。我想做很多基于变量的标签更新,所以这样做的愿望导致我使用 .kv 文件和 kivy 属性。诚然,我对这些事情知之甚少,这只是我通过谷歌搜索并试图弄清楚我需要做什么所知道的。
无论如何,我正在尝试做一些基本的框架来开始使用 .kv 文件,虽然我的 main.py 可以编译,但它不显示任何按钮。我熟悉通过 python 语言向布局添加按钮,但我希望以 kivy 风格做更多的事情。请帮忙!
这是我的 main.py
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.properties import StringProperty
import random
class YourWidget(Widget):
random_number = StringProperty()
def __init__(self, **kwargs):
super(YourWidget, self).__init__(**kwargs)
self.random_number = str(random.randint(1, 100))
def change_text(self):
self.random_number = str(random.randint(1, 100))
class YourApp(App):
def build(self):
return YourWidget()
if __name__ == '__main__':
YourApp().run()
这是我的your.kv
#:kivy 1.9.2
<YourWidget>:
BoxLayout:
size: root.size
orientation: 'horizontal'
spacing: 10
padding: 10
Button:
id: btn1
text: "Change Text"
on_release: root.change_text()
size_hint: .3, .3
Button:
id: btn2
text: "Exit App"
on_release: App.get_running_app().stop()
size_hint: .3, .3
Label:
id: lbl1
Font_size: 70
text:root.random_number
size_hint: .3, .3
如果您有任何可以提供帮助的信息,请告诉我。我对 python 非常陌生,对像 kivy 这样的包也非常陌生。谢谢!另一个注意事项是目前我正在监视器上开发它,稍后将移植到触摸屏。
【问题讨论】:
-
从 kv 文件中删除画布。
-
您不会将小部件添加到
canvas,而是将它们添加到Widget。画布用于else。基本上:<YW>: BoxLayout: -
尝试删除画布并没有改善。应用程序运行并且屏幕保持黑色,没有显示任何按钮或标签。我尝试将其命名为 Your.kv、Your.kv、YourWidget.kv、main.kv,这些似乎都不会影响它。命名 kv 文件的正确语法是什么? KV 文件的当前代码现在反映在原始帖子中。
-
它应该被命名为
your.kv,注意它是小写的(这是 Kivy 真正需要的,尽管 Your.kv 也可以在不区分大小写的文件系统上工作)。 -
这一直是我的问题!但现在我知道了正确的语法。我环顾了一下kivy的说明,没有找到任何很好地解释规则的东西。谢谢!
标签: button label kivy boxlayout