python - 如何在 Tkinter 中依次打开子窗口?
问题描述
我试图一个接一个地打开几个窗口tkinter
。它们会在设定的时间后自行关闭。创建第一个窗口打破了我的循环(它甚至没有达到print
指令)。我究竟做错了什么?这是我的代码:
import tkinter as tk
class Subwindow:
def __init__(self, time):
self.time = time
self.window = tk.Toplevel()
self.window.geometry("300x300+1000+200")
self.window.wm_attributes("-topmost", 1)
tk.Label(self.window, text=time).pack(anchor=tk.CENTER)
self.update_time()
self.window.mainloop()
def update_time(self):
if self.time:
self.window.title(str(self.time))
self.time -= 1
self.window.after(1000, self.update_time)
else:
self.window.destroy()
class Window:
def __init__(self):
self.window = tk.Tk()
self.initialize()
self.window.mainloop()
def initialize(self):
buttons = tk.Frame(self.window)
tk.Button(self.window, text="Start", width=5, command=self.start).pack(in_=buttons, side="left")
tk.Button(self.window, text="Exit", width=5, command=self.close).pack(in_=buttons, side="left")
buttons.place(relx=0.97, rely=0.95, anchor=tk.SE)
def close(self):
self.window.destroy()
quit()
def start(self):
for x in [5,10,15]:
sub = Subwindow(x)
print(x)
Window()
请解释一下,我该如何解决才能让他们一个一个打开?
解决方案
您不应mainloop
多次致电。删除对mainloop
inside的调用Subwindow.__init__
。
推荐阅读
- reactjs - React/Redux - 不调度动作
- sql - oracle 中的 Dateadd 和 Datediff 函数
- html - 如何使列表的各个部分保持水平
- javascript - 在来自孩子的父母通话数据中
- python - 由于 setup.py 安装的外部库,如何抑制警告?
- javascript - 无法读取类中未定义的属性
- javascript - 来自 Spring RestController 的 jQuery.get
- python - Python for循环遍历数组创建JSON文件
- android - 在使用带有动作 ACTION_GET_CONTENT 的意图时传递带有意图的附加内容
- tslint - tslint 如何禁用错误“someVariable 已声明但其值从未被读取”