我目前正在尝试每秒更新一个TKinter窗口。所以想法是打开一个窗口,让Python更新字段,显示更新的窗口。目前的情况是只有在关闭第一个窗口时,第二个窗口才会显示。我猜测这与mainloop()有关。我尝试过.update()和.update_idletasks()但是无法弄清楚如何实现它。TKinter用于显示一个带有房屋的领域。一般来说应该这样做:
- 生成房屋位置(已实现)
- 显示带有房屋的领域(已实现)
- 生成房屋的新位置(已实现)
- 显示更新后的领域
这是我的当前代码。我不确定更新函数是否必要。
class Plot(tk.Frame):
def __init__(self, master=None):
tk.Frame.__init__(self, master)
self.grid()
def createWidgets(self, list_houses):
houses = list_houses
self.w = tk.Canvas(self, width = field.width*SIZE, height = field.height*SIZE, bg = '#E4E4E4')
...
self.w.grid()
def update(self):
?
#GENERATES FIELD AND HOUSES
...
#PRINT FIRST WINDOW
plot = Plot()
plot.createWidgets(houses) <- PUT HOUSES IN TK INTER
plot.master.title('map of houses')
plot.mainloop()
# UPDATE FIELD <- THIS PART IS ONLY EXECUTED WHEN I CLOSE THE FIRST WINDOW, WHY?
i = 0
while i < 2:
update = field.update_houses(houses) <- GENERATES NEW LOCATION OF HOUSES
#PRINT UPDATED WINDOW, IT SHOULD BE PRINTED IN THE SAME WINDOW!
plot = Plot()
plot.createWidgets(houses) <- PUT HOUSES IN TKINTER
plot.master.title('map of houses')
i += 1
感谢您提前的支持!