向 kivy 按钮添加 on_release 操作
Posted
技术标签:
【中文标题】向 kivy 按钮添加 on_release 操作【英文标题】:adding an on_release action to a kivy button 【发布时间】:2012-09-23 11:51:30 【问题描述】:我正在尝试重构the last code sample,以便Button
实际上是它自己的类,带有on_release
操作。但是我的代码失败了。
我不仅想重构它(根据我下面的尝试),还需要将Button
的文本设置为“清除”
【问题讨论】:
【参考方案1】:没有子类化,你可以这样做:
class MyPaintWidget(Widget):
# ... put your previous methods here
def clear_canvas(self, *largs):
self.canvas.clear()
class MyPaintApp(App):
def build(self):
root = FloatLayout()
painter = MyPaintWidget()
cleanbtn.bind(on_release=self.painter.clear_canvas)
root.add_widget(painter)
root.add_widget(clearbtn)
return root
使用子类化,我更喜欢使用 Kv 语言:
from kivy.lang import Builder
Builder.load_string('''
<ClearButton>:
text: "Clear"
on_release: app.painter.canvas.clear()
''')
class ClearButton(Button):
pass
class MyPaintApp(App):
def build(self):
parent = Widget()
painter = MyPaintWidget()
clearbtn = ClearButton()
parent.add_widget(painter)
parent.add_widget(clearbtn)
return parent
【讨论】:
以上是关于向 kivy 按钮添加 on_release 操作的主要内容,如果未能解决你的问题,请参考以下文章
动态创建的 kivy 按钮立即运行 on_press 和 on_release