python - 如何在单击按钮时更新 kivy 中的标签
问题描述
我真的厌倦了与该主题相关的搜索。而且永远不会得到很好的答案...
解决方案
我很抱歉这么说,但是你应该质疑你的搜索技巧。下次请提供您已经尝试过的最小示例,因为这样我可以帮助您正确理解这些机制。当然,我可以简单地给你一个解决方案,但这对你毫无帮助,因为通常有不同的方法可以得到相同的结果,但在某些情况下,你应该更喜欢一种方法而不是另一种方法。
回到你的问题
这是一个简单的例子:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.label import Label
import random
class MyApp(App):
def build(self):
self.layout = BoxLayout()
self.btn = Button(text="press", on_press=self.my_btn_method)
self.lbl = Label(text="")
self.layout.add_widget(self.btn)
self.layout.add_widget(self.lbl)
return self.layout
def my_btn_method(self, instance):
self.lbl.text = str(random.randint(0,100))
MyApp().run()
解释:
每个 Button 类和从 Button 类继承的每个类都有一个 on_press 方法。
您基本上有两种可能性,要么编写自己的自定义按钮类并覆盖此类中的 on_press 方法,要么编写自定义方法并将此方法分配给按钮属性 on_press,就像我在本示例中所做的那样。执行此操作时,您的自定义方法必须将按钮实例作为属性。
要更改标签文本,我只需为标签文本属性分配一个新字符串。我真的希望,这可以帮助您解决问题。如果您有一些困难,请写评论,我会尽力帮助您。
还有一个 on_release 方法,您可以使用与 on_press 方法相同的方式。
推荐阅读
- javascript - React 找不到模块 - ttf、otf 字体
- reactjs - 如何在 yup 中为反应选择(单选)分配对象验证
- c# - InvalidOperationException:没有为此 DbContext 配置数据库提供程序。可以通过覆盖 DbContext 来配置提供程序
- c++ - 针对特定 CXXABI 和 GLIBCXX 版本的交叉编译
- php - 需要借助 Windows 身份验证在 PHP 中集成 SSO
- wordpress - Wordpress:是否有一个 SHORTCODE 可以在前端输出注册表单?
- apache-spark - Pyspark - 对数据框进行非矢量化
- java - redis缓存中的自定义名称
- angular - cdk虚拟滚动的itemsize
- php - Magento 2 - 自定义支付模块前端错误