Python Kivy: how to call a function on button click?(Python Kivy:如何在按钮单击时调用函数?)
问题描述
我对使用 kivy 库很陌生.
i'm pretty new at using kivy library.
我有一个 app.py 文件和一个 app.kv 文件,我的问题是我无法在按下按钮时调用函数.
I have an app.py file and an app.kv file , my problem is that I can't call a function on button press.
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()代码>.
Mode:.kv
It's very simple, say_hello belongs to the Launch class so in order to use it in your .kv file you have to write root.say_hello. Note that say_hello is a function that you want to execute so you don't have to forget the () ---> root.say_hello().
另外,如果 say_hello 在 App 类中,您应该使用 App.say_hello() 因为它属于应用程序.(注意:即使你的 App 类是 class MyFantasicApp(App): 它总是 App.say_hello() 或 app.say_hello() 我不记得了,抱歉).
Also, if say_hello were in App class you should use App.say_hello() because it belongs to the app. (Note: even if your App class were class MyFantasicApp(App): it would always be App.say_hello() or app.say_hello() I don't remember, sorry).
#:kivy 1.9.1
<Launch>:
BoxLayout:
Button:
size:(80,80)
size_hint:(None,None)
text:"Click me"
on_press: root.say_hello()
模式:.py
你可以绑定函数.
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"
为什么要使用 bind?对不起,不知道.但是您在 kivy 指南中使用了它.
Why use bind? Sorry, no idea. But you it's used in the kivy guide.
这篇关于Python Kivy:如何在按钮单击时调用函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Python Kivy:如何在按钮单击时调用函数?
基础教程推荐
- PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01
- 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01
- 修改列表中的数据帧不起作用 2022-01-01
- 求两个直方图的卷积 2022-01-01
- PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01
- 包装空间模型 2022-01-01
- Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01
- 在Python中从Azure BLOB存储中读取文件 2022-01-01
- 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01
- 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
