0

我一直在尝试使用本教程中的小部件http://kivy.org/docs/tutorials/firstwidget.html# 我无法对小部件进行任何触摸,它不会将我的点击识别为触摸。如何让它将我的点击检测为触摸响应?这是我现在的代码,

from kivy.app import App
from kivy.uix.widget import Widget

class MyPaintWidget(Widget):
    def on_touch_down(self, touch):
        with self.canvas:
            Color(1, 1, 0)
            d = 30.
            Ellipse(pos=(touch.x - d / 2, touch.y - d / 2), size=(d, d))

class MyPaintApp(App):
    def buil(self):
        return MyPaintWidget()

if __name__ == '__main__':
    MyPaintApp().run()
4

1 回答 1

1

1)你有一个错字,定义了buil它应该是的方法build。这意味着该方法永远不会做任何事情,因为它没有被调用,因此永远不会创建或显示绘制小部件。

2)您不导入颜色或椭圆。即使上面的错字是正确的,这也会在 on_touch_down 方法中引发错误。

下面是一个适合我的固定版本。也许这两个错误只是您粘贴到此处时的拼写错误,但它们肯定都会破坏应用程序 - 第一个错误会导致您看到的行为。

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics.context_instructions import Color
from kivy.graphics.vertex_instructions import Ellipse

class MyPaintWidget(Widget):
    def on_touch_down(self, touch):
        with self.canvas:
            Color(1, 1, 0)
            d = 30.
            Ellipse(pos=(touch.x - d / 2, touch.y - d / 2), size=(d, d))

class MyPaintApp(App):
    def build(self):
        return MyPaintWidget()

if __name__ == '__main__':
    MyPaintApp().run()
于 2013-10-18T14:16:47.487 回答