我正在完成Kivy教程programming guide,并且发现以下代码实际上并没有在任何地方打印按钮位置,据我所知 - 也就是说,btn_pressed()方法没有好像什么都没做。
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ListProperty
class RootWidget(BoxLayout):
def __init__(self, **kwargs):
super(RootWidget, self).__init__(**kwargs)
self.add_widget(Button(text='btn 1'))
cb = CustomBtn()
cb.bind(pressed=self.btn_pressed)
self.add_widget(cb)
self.add_widget(Button(text='btn 2'))
def btn_pressed(self, instance, pos):
print ('pos: printed from root widget: {pos}'.format(pos=pos))
class CustomBtn(Widget):
pressed = ListProperty([0, 0])
def on_touch_down(self, touch):
if self.collide_point(*touch.pos):
self.pressed = touch.pos
# we consumed the touch. return False here to propagate
# the touch further to the children.
return True
return super(CustomBtn, self).on_touch_down(touch)
def on_pressed(self, instance, pos):
print ('pressed at {pos}'.format(pos=pos))
class TestApp(App):
def build(self):
return RootWidget()
if __name__ == '__main__':
TestApp().run()
有没有人有任何提示或想法,为什么这不起作用?这是预期的行为,我错过了什么或教程中是否有错误?
具体来说,虽然上面的说明产生了可以点击并闪烁的按钮---似乎没有任何与该方法相对应的输出:
def btn_pressed(self, instance, pos):
print ('pos: printed from root widget: {pos}'.format(pos=pos))
也许它在黑色上打印黑色?
答案 0 :(得分:0)
中间看似空白,无标签的位置是接受位置并将位置打印到控制台的按钮。我点击标有“btn”的按钮,并没有注意到这个地方存在。
本教程的这一部分将演示如何制作自定义按钮来完成这样的操作。如果这是标记的话会更清楚,但通过查看API应该可行。
无论如何,代码按预期工作。