【发布时间】:2020-11-13 13:15:25
【问题描述】:
我正在使用 Kivy 创建简单的绘图应用程序。我正在通过这段代码实现绘图:
class Paint(Widget):
def on_touch_down(self, touch):
color = (random(), 1, 1)
with self.canvas:
Color(*color, mode='hsv')
d = 10.
if touch.y > self.height:
Ellipse(pos=(touch.x - d / 2, touch.y - d / 2), size=(d, d))
touch.ud['line'] = Line(points=[touch.x, touch.y], width=5)
else:
pass
def on_touch_move(self, touch):
if touch.y > self.height:
touch.ud['line'].points += [touch.x, touch.y]
else:
pass
“if”语句用于忽略超出我的绘图区域但仍在应用程序窗口中的触摸输入。 当我开始在正确的区域绘图时,即使我超出了界限,一切都可以正常工作。
当我开始在该区域外绘制并进入该区域时发生错误。 这些是我得到的日志:
[INFO ] [Base ] 正在退出应用程序... 回溯(最近一次通话最后): 文件“/home/igor/PycharmProjects/kivytest/kivytest.py”,第 46 行,在 MainApp().run() 文件“/home/igor/PycharmProjects/kivytest/venv/lib/python3.6/site-packages/kivy/app.py”, 第 855 行,运行中 运行触摸应用程序() 文件“/home/igor/PycharmProjects/kivytest/venv/lib/python3.6/site-packages/kivy/base.py”, 第 504 行,在 runTouchApp 中 EventLoop.window.mainloop() 文件“/home/igor/PycharmProjects/kivytest/venv/lib/python3.6/site-packages/kivy/core/window/window_sdl2.py”, 第 747 行,在主循环中 self._mainloop() 文件“/home/igor/PycharmProjects/kivytest/venv/lib/python3.6/site-packages/kivy/core/window/window_sdl2.py”, 第 479 行,在 _mainloop EventLoop.idle() 文件“/home/igor/PycharmProjects/kivytest/venv/lib/python3.6/site-packages/kivy/base.py”, 第 342 行,空闲 self.dispatch_input() 文件“/home/igor/PycharmProjects/kivytest/venv/lib/python3.6/site-packages/kivy/base.py”, 第 327 行,在 dispatch_input 中 post_dispatch_input(*pop(0)) 文件“/home/igor/PycharmProjects/kivytest/venv/lib/python3.6/site-packages/kivy/base.py”, 第 233 行,在 post_dispatch_input listener.dispatch('on_motion', etype, 我) 文件“kivy/_event.pyx”,第 707 行,在 kivy._event.EventDispatcher.dispatch 文件“/home/igor/PycharmProjects/kivytest/venv/lib/python3.6/site-packages/kivy/core/window/init.py”, 第 1404 行,在 on_motion self.dispatch('on_touch_move', 我) 文件“kivy/_event.pyx”,第 707 行,在 kivy._event.EventDispatcher.dispatch 文件“/home/igor/PycharmProjects/kivytest/venv/lib/python3.6/site-packages/kivy/core/window/init.py”, 第 1430 行,在 on_touch_move 如果 w.dispatch('on_touch_move', touch): 文件“kivy/_event.pyx”,第 707 行,在 kivy._event.EventDispatcher.dispatch 文件“/home/igor/PycharmProjects/kivytest/venv/lib/python3.6/site-packages/kivy/uix/widget.py”, 第 560 行,在 on_touch_move if child.dispatch('on_touch_move', touch): 文件“kivy/_event.pyx”,第 707 行,在 kivy._event.EventDispatcher.dispatch 文件“/home/igor/PycharmProjects/kivytest/kivytest.py”,第 30 行,在 on_touch_move touch.ud['line'].points += [touch.x, touch.y] 键错误:'行'
感谢您的帮助:D
【问题讨论】:
标签: python python-3.x kivy kivy-language keyerror