我正在编写一个脚本来读取击键并在乌龟中绘制简单的形状。
要记录击键,我正在使用keyboard
模块,并且正在使用turtle
进行绘制。
由于在keyboard
模块中使用了线程,我感到很震惊。
我当前正在做的是-
keyboard.add_hotkey
方法添加了热键。data
)中以备后用。data
一次弹出一个字母。根据弹出的字母绘制形状。我面临的问题是,一旦调用save函数,该程序将停止监听其他调用。可能是由于在keyboard
模块中使用了线程。
代码附在此处-
def start():
#turtle.mainloop()
s=turtle.Screen().setup( width = WIDTH, height = HEIGHT, startx = 0, starty = 0)
global t
t=turtle.Turtle()
turtle.ht()
t.ht()
def save():
start()
global t
global data
t.speed(0)
while data:
fun = data.pop()
if fun=='c':
draw_circle()
elif fun=='r':
draw_rectangle()
elif fun=='p':
draw_polygon()
elif fun=='h':
draw_hexagon()
elif fun=='t':
draw_triangle()
elif fun=='m':
draw_pentagon()
ts = turtle.getscreen()
ts.getcanvas().postscript(file="drawing.eps")
img = Image.open('drawing.eps')
img.save('drawing.png')
turtle.bye()
def push_fun(fun):
data.append(fun)
if __name__=='__main__':
keyboard.add_hotkey('ctrl+shift+s', save)
keyboard.add_hotkey('ctrl+shift+e', exit)
keyboard.add_hotkey('ctrl+shift+p', send_to_server)
# keyboard.add_hotkey('ctrl+shift+s', save, args=(data))
keyboard.add_hotkey('c', push_fun, args=('c',))
keyboard.add_hotkey('s', push_fun, args=('t',))
keyboard.add_hotkey('h', push_fun, args=('h',))
keyboard.add_hotkey('p', push_fun, args=('p',))
keyboard.add_hotkey('r', push_fun, args=('r',))
keyboard.wait()
调用save函数后,程序保留在keyboard.wait()部分中,但不收听其他任何按键。
答案 0 :(得分:0)
您可以通过设置按键来结束等待,例如:
keyboard.wait('space')
但是没有给出任何键的keyboard.wait()会永远阻止所有击键
我不确定你为什么把它放在那儿,我什至不确定为什么它会捡起任何东西,但是我认为你可以做到这一点:
if __name__=='__main__':
'''your keystrokes'''
while True: #or set a timer or something
pass
您没有给我完整的代码,所以我无法确定它是否有效
您还需要在push_fun函数中全局列表数据
我希望这会有所帮助:)