Ich versuche, ein einfaches Tkinter-Programm in Python zu machen, das "True" ausgibt, während ich die "U" -Taste gedrückt halte und "False", wenn ich loslasse. Leider, wenn ich das Programm starte, druckt es "True", wenn ich "U" drücke und dann 300 Millisekunden später "False" druckt.Python Tkinter auf einem Mac: Warum kann ich nicht erkennen, wenn eine Taste gedrückt gehalten wird?
Ich möchte, dass dies in Tkinter oder einem anderen integrierten Modul bleibt, ich möchte keine externen Module wie Pygame verwenden. Ich bin auf einem Mac, OS X El Capitan, Python 2.7.10. Ich bin offen für die Verwendung einer anderen Programmiersprache, solange es ausgeführt wird, und sendet Keypress-Informationen an diese Python-Datei. Das ist mein Code:
import Tkinter
root = Tkinter.Tk()
U = False
Udone = True
def Ustart():
global Udone
Udone = True
def Press(event):
global U
global Udone
U = True
Udone = False
print("True")
root.after(300, Ustart)
def Release(event):
global U
global Udone
if Udone:
U = False
print("False")
root.bind("u", Press)
root.bind("<KeyRelease-u>", Release)
root.mainloop()
Der Computer sendet kein Key-Down-Signal kontinuierlich, sondern intermittierend mit einer bestimmten Wiederholrate. Auf den meisten Computern zeigt das Programm also True an, wenn die Wiederholungsrate vorüber ist und dazwischen False. Versuchen Sie eine os.system ('xset r off') Zeile zum Programm hinzuzufügen. Unter Linux gibt Ihr Programm "True" aus, wenn die Taste zum ersten Mal gedrückt wird, und "False", wenn die Taste losgelassen wird. –