为什么这个不同步?

时间:2014-05-09 05:07:12

标签: 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")
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()

1 个答案:

答案 0 :(得分:1)

你试图重新定位它是怎么回事? mainloop启动GUI,它应该被称为last,iirc。除了PumpMessages会阻止该主题,我认为...... Mhm,here是一个相关的问题。所以这是因为主线程被mainloop阻止,因此pyhook无法做到(但是)。