我对使用 kivy 库还很陌生。
我有一个 app.py 文件和一个 app.kv 文件,我的问题是我无法在按下按钮时调用函数。
app.py:
import kivy
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
class Launch(BoxLayout):
def __init__(self, **kwargs):
super(Launch, self).__init__(**kwargs)
def say_hello(self):
print "hello"
class App(App):
def build(self):
return Launch()
if __name__ == '__main__':
App().run()
app.kv:
#:kivy 1.9.1
<Launch>:
BoxLayout:
Button:
size:(80,80)
size_hint:(None,None)
text:"Click me"
on_press: say_hello
Mode:.kv
这很简单,say_hello
属于Launch
类,以便在您的.kv
你必须写的文件root.say_hello
。注意say_hello
是您想要执行的函数,因此您不必忘记()
--->root.say_hello()
.
另外,如果say_hello
曾在App
你应该使用的类App.say_hello()
因为它属于应用程序。 (注意:即使您的 App 类是class MyFantasicApp(App):
它将永远是App.say_hello()
or app.say_hello()
我不记得了,抱歉)。
#:kivy 1.9.1
<Launch>:
BoxLayout:
Button:
size:(80,80)
size_hint:(None,None)
text:"Click me"
on_press: root.say_hello()
Mode: .py
You can bind
功能。
from kivy.uix.button import Button # You would need futhermore this
class Launch(BoxLayout):
def __init__(self, **kwargs):
super(Launch, self).__init__(**kwargs)
mybutton = Button(
text = 'Click me',
size = (80,80),
size_hint = (None,None)
)
mybutton.bind(on_press = self.say_hello) # Note: here say_hello doesn't have brackets.
Launch.add_widget(mybutton)
def say_hello(self):
print "hello"
Why use bind
?抱歉,不知道。但你它用在基维指南 https://kivy.org/docs/api-kivy.uix.button.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)