如何在FloatLayout中的按钮下添加方法,Python + Kivy
How to add method under button in FloatLayout, Python + Kivy
我想在按钮下分配一个方法来做例子
- 在控制台打印文本
- 退出表单
我的主要 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()
如有错误请指正:
- 我定义 class MyGeneralForm 继承自 Class 来自 Kivy 的 App
- 我不确定为什么我定义这个方法“Build”,其中 return “FloatLayout” -> 它的行为是否像来自 Kivy 的 class 和 returns 布局的构造函数文件?
- 我在 class 中定义了两个额外的方法:btnTestEnviron 和 btnClose 我想打印某事。在控制台中并关闭 form/app
- name = main -> 每当你 运行 这个特定的 python 文件时执行脚本 -> 它创建 class MyGeneralForm 的对象并使用方法“运行 “据我所知,它是在 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,其中我创建了两个按钮
- 如何将 class (MyGeneralForm) 中的方法(btnTestEnviron、btnClose)与这些按钮相关联?正确编程 运行s,但是当我单击按钮时,我收到以下错误:
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'
您没有在布局中定义按钮功能class
这是正确的代码:
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
class FloatLayout(FloatLayout):
def btnTestEnviron(self):
print("Print this on console")
def btnClose(self):
App.get_running_app().stop()
class MyGeneralFormApp(App):
def build(self):
return FloatLayout()
if __name__ == "__main__":
MyGeneralFormApp().run()
我想在按钮下分配一个方法来做例子
- 在控制台打印文本
- 退出表单
我的主要 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()
如有错误请指正:
- 我定义 class MyGeneralForm 继承自 Class 来自 Kivy 的 App
- 我不确定为什么我定义这个方法“Build”,其中 return “FloatLayout” -> 它的行为是否像来自 Kivy 的 class 和 returns 布局的构造函数文件?
- 我在 class 中定义了两个额外的方法:btnTestEnviron 和 btnClose 我想打印某事。在控制台中并关闭 form/app
- name = main -> 每当你 运行 这个特定的 python 文件时执行脚本 -> 它创建 class MyGeneralForm 的对象并使用方法“运行 “据我所知,它是在 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,其中我创建了两个按钮
- 如何将 class (MyGeneralForm) 中的方法(btnTestEnviron、btnClose)与这些按钮相关联?正确编程 运行s,但是当我单击按钮时,我收到以下错误:
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'
您没有在布局中定义按钮功能class 这是正确的代码:
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
class FloatLayout(FloatLayout):
def btnTestEnviron(self):
print("Print this on console")
def btnClose(self):
App.get_running_app().stop()
class MyGeneralFormApp(App):
def build(self):
return FloatLayout()
if __name__ == "__main__":
MyGeneralFormApp().run()