我一直在使用Python创建游戏,并在我的一个功能中
def Enemy_Party(enemies, party):
def Sub_Fight(member, enemy, enemies, Prep):
Prep.destroy()
Fight(member, enemy, enemies)
for x in enemies:
Prep = Tk()
for y in party:
button = Button(Prep, text=y.name, command=Sub_Fight(y, x, enemies, Prep)).pack()
Prep.mainloop()
创建了一个窗口,但没有任何内容。没有错误消息,空白窗口就在那里。
是的,我有一个函数Fight,它确实需要四个参数。两个人的敌人'和派对'被定义为列表,并且两者都有值(我已经检查过)。
就此而言,我有两个问题:"为什么程序在创建一个空白窗口后停止?"和"您可以在“For循环”中定义窗口吗?
如果您需要更多代码,请告诉我,并提前感谢。
答案 0 :(得分:3)
该程序在第一次调用mainloop
时暂停,因为mainloop
的作用是什么 - 在您销毁窗口之前它不会返回。
您对如何创建窗口存在根本性的误解。每个tkinter应用程序都需要Tk
的单个实例。要创建其他窗口,您需要创建Toplevel
的实例。然后,您需要拨打mainloop
一次。
在您的代码中,通过调用Tk
来取代对Toplevel
的来电,然后移除您函数中对mainloop
的调用。在创建所有小部件之后,您可能会在代码中的其他位置调用mainloop
。
答案 1 :(得分:0)
我注意到您在Tk()
循环中定义了for
。根据此循环迭代的次数,您可以创建 Tk()的许多实例,而实际上您永远不应创建多个实例。我建议在循环之外创建窗口并填充它,因为您需要使用循环(或者您可能决定使用的其他任何东西)。