我试图在我的代码中实现touchtracer演示示例。
Here is the original page
我意识到由于必要的touch.grab(self)事件,跟踪仅在延迟(按下并按住按钮之后)后才起作用。但是,我想在第一步之后立即看到没有延迟的痕迹。有什么方法可以做到而又不会打扰痕迹?
编辑:“延迟”是指激活跟踪的保持操作。当前,需要按住+来启动跟踪器。我希望能够随时随地进行跟踪,而无需“按住”。
EDIT2:我觉得有必要解释一下我的touchtracer版本与其他所有人的不同之处,因为除了我之外,没有人会面临这个问题。我将touchtracer代码嵌入到我的代码中,并删除了垂直/水平线和标签。所以我的版本只有踪迹。这是我的on_touch_down,on_touch_move和on_touch_up的样子。
def on_touch_down(self, touch):
win = self.get_parent_window()
ud = touch.ud
ud['group'] = g = str(touch.uid)
pointsize = 5
ud['color'] = random()
with self.canvas:
Color(ud['color'], 1, 1, mode='hsv', group=g)
ud['lines'] = [
Point(points=(touch.x, touch.y), source='particle.png',
pointsize=pointsize, group=g)]
touch.grab(self)
return True
def on_touch_move(self, touch):
if touch.grab_current is not self:
return
ud = touch.ud
index = -1
while True:
try:
points = ud['lines'][index].points
oldx, oldy = points[-2], points[-1]
break
except:
index -= 1
if (oldx, oldy) == (touch.x, touch.y):
return
points = calculate_points(oldx, oldy, touch.x, touch.y)
if points:
try:
lp = ud['lines'][-1].add_point
for idx in range(0, len(points), 2):
lp(points[idx], points[idx + 1])
except GraphicException:
pass
def on_touch_up(self, touch):
if touch.grab_current is not self:
return
touch.ungrab(self)
ud = touch.ud
self.canvas.remove_group(ud['group'])
最佳答案
好的,其中一个库看起来像是版本问题。我在在virtualbox上运行的Ubuntu 14.0构建的python2.7中使用了此功能。我更新了与python相关的所有内容,并使用库重新安装了kivy,问题已解决。我仍然不确定是什么原因造成的,因为我没有在日志中收到任何错误消息,但是看起来这是由于错误或未正确安装的kivy。
关于python - 奇异搏击手,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37933920/