【发布时间】:2012-05-07 01:13:02
【问题描述】:
我正在创建一个游戏,供用户选择角色颜色并引导他们穿过迷宫。最初我让用户输入他们角色的名称和他们希望他们去的方向,但将输入更改为使用 tkinter 的箭头键。现在我遇到了一个问题,因为 tkinter 会为其输入打开一个新窗口。
import view,datetime,Tkinter as tk
def main():
global root
if __name__ == "__main__":
view.root.update()
command = raw_input( "choose a player:" )
run1( command )
view.root.update()
while True:
root = tk.Tk()
print( "Press a key (Escape key to exit):" )
root.bind_all( '<Key>', key )
root.mainloop()
root.withdraw()
root.destroy()
view.root.destroy()
main()
这显示了我导入的内容和我的主要功能。
【问题讨论】:
-
我不确定这是否是问题所在,但是您的 main 函数中的 while 循环的目的是什么?
-
其实现在我想起来了,我很确定这就是问题所在。当你用鼠标关闭游戏窗口时会发生什么?
-
我把while循环作为一个无限循环。我把它拿出来,它仍然做同样的事情。当我提示用户输入角色和他们希望他们前进的方向以便他们可以在游戏中移动时,我在我的原始程序中有它。当我改为箭头键时,它变得不必要了。
-
当我开始游戏时,它会打开我想要的实际窗口,其中显示了角色和迷宫,但还有另一个较小的窗口,我必须在其中单击以进行角色移动。当我关闭辅助窗口时,出现此错误:TclError: can't invoke "wm" command: application has been destroy
-
root.mainloop()行阻塞,直到应用程序被销毁。辅助窗口的代码在哪里?