【发布时间】:2021-09-15 22:17:14
【问题描述】:
我想在按钮下分配一个方法来做例子
- 在控制台中打印文本
- 退出表单
我的主要python文件如下:
import kivy
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
class MyGeneralForm(App):
def build(self):
return FloatLayout()
def btnTestEnviron(self):
print("Print this on console")
def btnClose(self):
self.root_window.close()
if __name__ == "__main__":
MyGeneralForm().run()
如有错误请指正:
- 我定义了继承自 Kivy 的 Class App 的 MyGeneralForm 类
- 我不知道为什么要定义这个方法“Build”,它返回“FloatLayout” -> 它的行为类似于类的构造函数并从 Kivy 文件返回布局?
- 我在类中定义了两个附加方法:btnTestEnviron 和 btnClose,我想打印它们。在控制台中并关闭表单/应用程序
- name = main -> 每当你运行这个特定的 python 文件时执行脚本 -> 它创建类 MyGeneralForm 的对象并使用我理解的方法“run”,我理解它是在 Kivy 的“App”之后继承的?
为什么不是这样的:
TestApp = MyGeneralForm() #I set the object of class MyGeneralForm
TestApp.run() #I use method run from object TestApp (inherited from App)
现在我有 Kivy 文件如下:
<Button>:
font_size:20
color:0.3,0.6,0.7,1
size_hint: 0.4, 0.2
<FloatLayout>:
Button:
id: btnTestEnviron
pos_hint: {"x":0.3,"y":0.75}
text: "Run on test Environment"
background_color: 0.3,0.4,0.5,1
on_press: root.btnTestEnviron()
Button:
id: btnExit
pos_hint: {"x":0.3,"y":0.0}
text: "Exit"
background_color: 0.3,0.4,0.5,1
on_press: root.btnClose()
- 我将所有小部件的属性定义为 -> 为精确按钮 -> 它们的字体、颜色、宽度、高度
- 然后我创建 FloatLayout 并在其中创建两个按钮
- 如何将我的类 (MyGeneralForm) 中的方法 (btnTestEnviron、btnClose) 与这些按钮相关联?程序运行正常,但是当我点击按钮时收到以下错误:
File "kivy\weakproxy.pyx", line 32, in kivy.weakproxy.WeakProxy.__getattr__
AttributeError: 'FloatLayout' object has no attribute 'btnTestEnviron'
File "kivy\weakproxy.pyx", line 32, in kivy.weakproxy.WeakProxy.__getattr__
AttributeError: 'FloatLayout' object has no attribute 'btnClose'
【问题讨论】:
标签: python kivy kivy-language