【发布时间】:2012-09-23 11:51:30
【问题描述】:
我正在尝试重构the last code sample,以便Button 实际上是它自己的类,带有on_release 操作。但是我的代码失败了。
我不仅想重构它(根据我下面的尝试),还需要将Button 的文本设置为“清除”
【问题讨论】:
我正在尝试重构the last code sample,以便Button 实际上是它自己的类,带有on_release 操作。但是我的代码失败了。
我不仅想重构它(根据我下面的尝试),还需要将Button 的文本设置为“清除”
【问题讨论】:
没有子类化,你可以这样做:
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
【讨论】: