首页 > 解决方案 > 如何在 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()

请解释一下,我该如何解决才能让他们一个一个打开?

标签: pythonuser-interfacetkinterwindow

解决方案


您不应mainloop多次致电。删除对mainloopinside的调用Subwindow.__init__


推荐阅读