为什么右键点击会在圆形中心创建一个橙色点?

39

为什么在kivy的第一个小部件示例中,右键单击画布时会导致黄色圆形中间出现橙色圆形,而左键单击时则会生成纯黄色圆形?

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import Color, 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()

当我第一次看到它时,这绝对吓到了我,我不知道为什么一个按钮会做那样的事情。以前从未使用过基于触摸的库。 - John C
2个回答

39

要禁用多点触控仿真,请在包含主函数的源文件中添加以下内容,此操作必须在导入任何其他kivy模块之前完成:

from kivy.config import Config
Config.set('input', 'mouse', 'mouse,multitouch_on_demand')
from kivy.config import Config
Config.set('input', 'mouse', 'mouse,multitouch_on_demand')

1
据我所知,在导入其他kivy模块之前不需要这样做。我在所有导入完成后执行了您的Config.set[...]命令,它可以正常工作。 - Asker

15

5
(1) 您可以通过左键单击并重新设置新的模拟多点触控来清除它们。 (2) 您可以设置多个。 (3) 查看Kivy示例/演示/图片样例,了解如何使用多点触控仿真的绝佳示例。 - Mark
2
仅提供链接的答案并不被视为良好的做法(正如您现在可能已经知道的那样)。请在您的答案中总结内容。 - CodeMouse92
这在Windows上可以工作,但在Android上会出现问题。如果我尝试打开DropDown子类菜单,我会得到以下异常:raise WidgetException([WARNING] stderr:kivy.uix.widget.WidgetException:无法将<gui.customdropdown.CustomDropDown object at 0x7aaf231d60>添加到窗口中,因为它已经有一个父对象<kivy.core.window.window_sdl2.WindowSDL object at 0x7ab1290f40>。 - Jean-Pierre Schnyder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接