我正在Python 3.7上构建tkinter应用程序,并在Windoows 10中使用Pyinstaller 3.5创建一个.exe。从IDE运行代码时,所有预期的键盘命令都能按预期工作。但是,在可执行文件中,按一次键就可以用组合键。
以下是一些演示该问题的测试代码:
import tkinter as tk
root = tk.Tk()
txt = tk.StringVar()
lbl = tk.Label(root, textvariable=txt)
def key_handle(event):
global txt
txt.set(event.keysym)
def kc_handle(event):
tk.messagebox.showinfo('Key Combo', 'Key Combo pressed')
root.bind('<Key>', key_handle)
root.bind('<Alt-b>', kc_handle)
lbl.pack()
root.mainloop()
然后以pyinstaller -w -F key_test.py
的身份调用Pyinstaller。
我知道的一件事是绑定的顺序似乎没有什么不同。如何在可执行文件中使用组合键?
答案 0 :(得分:1)
IDLE
是使用tkinter
构建的,它可以导入所有需要的模块供自己使用,并且您的代码可以正常工作,但是如果在没有IDLE
的情况下运行它,则必须导入所有模块您在代码中使用的代码。在您的示例中,将是
import tk.messagebox
顺便说一句::mainloop()
通常是类似的问题。 IDLE
Aready运行mainloop()
,因此代码可以在没有自己的mainloop()
的情况下工作。但是通常(没有IDLE
)需要使用mainloop()
。最好检查terminal/console/cmd.exe
中的代码以查看是否提供任何错误。