在python中使用tkinter时的新窗口
我正在创建一个游戏,让用户选择角色的颜色,然后引导他们穿过迷宫。最初,我让用户输入他们的角色名称和他们希望他们去的方向,但将输入更改为使用tkinter的箭头键。现在我遇到了一个问题,因为tkinter为其输入打开了一个新窗口在python中使用tkinter时的新窗口,python,tkinter,Python,Tkinter,我正在创建一个游戏,让用户选择角色的颜色,然后引导他们穿过迷宫。最初,我让用户输入他们的角色名称和他们希望他们去的方向,但将输入更改为使用tkinter的箭头键。现在我遇到了一个问题,因为tkinter为其输入打开了一个新窗口 import view,datetime,Tkinter as tk def main(): global root if __name__ == "__main__": view.root.update() command = ra
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()
这显示了我导入的内容和我的主要功能 每次你这么做
root = tk.Tk()
...
root.mainloop()
您正在创建一个全新的窗口。当然,当您在这个新窗口上使用bind_all时,这个新窗口就是接收输入的窗口。我真的不知道你想做什么,但很明显,这就是为什么你看到你看到的行为
大多数情况下,您只需要一个根-这就是为什么它被称为根!似乎应该在view.root实例上使用bind_all,而不是在这个新根上
另外,作为旁注,代码中的控制流非常奇怪。为什么if uuuu name uuuu=='\uuuuuuu main\uuuuuu'在主函数中?通常情况下,这将位于模块的顶层,并将调用main本身。每次执行此操作时
root = tk.Tk()
...
root.mainloop()
您正在创建一个全新的窗口。当然,当您在这个新窗口上使用bind_all时,这个新窗口就是接收输入的窗口。我真的不知道你想做什么,但很明显,这就是为什么你看到你看到的行为
大多数情况下,您只需要一个根-这就是为什么它被称为根!似乎应该在view.root实例上使用bind_all,而不是在这个新根上
另外,作为旁注,代码中的控制流非常奇怪。为什么if uuuu name uuuu=='\uuuuuuu main\uuuuuu'在主函数中?通常情况下,这将位于模块的顶层,并将调用main本身。root=tk.tk语句实际上创建了一个新窗口,root.mainloop维护窗口的控制循环。如果将此代码添加到while True中:将逐个打开多个窗口
在正确时检查是否需要:
关于root=tk.tk语句实际上创建了一个新窗口,root.mainloop维护窗口的控制循环。如果将此代码添加到while True中:将逐个打开多个窗口
在正确时检查是否需要:
关于我不确定这是否是问题所在,但主函数中while循环的目的是什么?事实上,现在我想起来了,我很确定这就是问题所在。当你用鼠标关闭游戏窗口时会发生什么?我把while循环作为一个无限循环。我把它拿出来,它仍然做同样的事情。当我在我的原始程序中提示用户输入角色和他们希望他们去的方向,以便他们可以在游戏中移动时,我就有了它。当我切换到箭头键时,它变得不必要了。当我开始游戏时,它会打开我想要的实际窗口,显示角色和迷宫,但也会打开另一个较小的窗口,我必须在其中单击以进行角色移动。当我关闭辅助窗口时,出现以下错误:TclError:无法调用wm命令:应用程序已被销毁行root.mainloop阻塞,直到应用程序被销毁。第二个窗口的代码在哪里?我不确定这是否是问题所在,但主函数中while循环的目的是什么?事实上,现在我想起来了,我很确定这就是问题所在。当你用鼠标关闭游戏窗口时会发生什么?我把while循环作为一个无限循环。我把它拿出来,它仍然做同样的事情。当我在我的原始程序中提示用户输入角色和他们希望他们去的方向,以便他们可以在游戏中移动时,我就有了它。当我切换到箭头键时,它变得不必要了。当我开始游戏时,它会打开我想要的实际窗口,显示角色和迷宫,但也会打开另一个较小的窗口,我必须在其中单击以进行角色移动。当我关闭辅助窗口时,出现以下错误:TclError:无法调用wm命令:应用程序已被销毁行root.mainloop阻塞,直到应用程序被销毁。你的第二个窗口的代码在哪里?我在那里做了很多错事,谢谢你的帮助。我已经获得了使用箭头键的代码,并使用了该根,而不是我应该使用的view.root。我上面的16行现在变成了6行。再次感谢。我做了很多错事,谢谢你的帮助。我已经获得了使用箭头键的代码,并使用了该根,而不是我应该使用的view.root。我上面的16行现在变成了6行。再次感谢。