Python 为什么会失去同步?

Python 为什么会失去同步?,python,tkinter,Python,Tkinter,当运行我的python应用程序时,按键不会产生声音,但是一旦退出tkinter gui,它就会工作并播放声音。我试图重新定位代码,但是GUI根本没有出现 from Tkinter import * import winsound import pythoncom import pyHook root = Tk() root.geometry("500x500") root.title("Piano Keys") photo = PhotoImage(file="food.gif") pictu

当运行我的python应用程序时,按键不会产生声音,但是一旦退出tkinter gui,它就会工作并播放声音。我试图重新定位代码,但是GUI根本没有出现

from Tkinter import *
import winsound
import pythoncom
import pyHook

root = Tk()
root.geometry("500x500")
root.title("Piano Keys")
photo = PhotoImage(file="food.gif")
picture = Label(root, image=photo)
picture.pack()
start = Button(root, text='Start Piano Keys')
close = Button(root, text='Exit Piano Keys', command=lambda:root.destroy())
close.pack()
root.mainloop()

def OnKeyboardEvent(event):
    key = event.Key
    if key == 'A':
        winsound.Beep(261, 200)
    if key == 'S':
        winsound.Beep(277, 200)
    if key == 'D':
        winsound.Beep(293, 200)
    if key == 'F':
        winsound.Beep(311, 200)
    if key == 'G':
        winsound.Beep(329, 200)
    if key == 'H':
        winsound.Beep(349, 200)
    if key == 'J':
        winsound.Beep(370, 200)
    if key == 'K':
        winsound.Beep(392, 200)
    if key == 'L':
        winsound.Beep(415, 200)
    return True

hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
hm.HookKeyboard()
pythoncom.PumpMessages()

你试图重新定位它,确切地说是怎么定位的
mainloop
启动GUI,应该最后调用它,iirc。除了
PumpMessages
会阻塞线程之外,我认为。。嗯,这是一个相关的问题。这是因为主线程被
mainloop
阻塞,因此pyhook还不能完成它的工作。

hmm我不知道如何解决这样的问题,因为我对python没有太多经验。是的,是的。哦,我想我必须研究一下。谢谢你提供的信息这里是否有Pyhook的特殊需求?只要它有焦点,您的根窗口或任何Tkinter小部件都可以捕获键盘事件。