在关闭前一个 Toplevel window 之后创建 Toplevel tkinter Window
Create Toplevel tkinter Window after the closure of previous Toplevel window
我有一个包含 n 个元素的列表,我需要为每个元素创建一个弹出菜单。每个弹出窗口都会包含一些复选框。
条件: 一个新的Toplevel popup window必须在前一个Toplevel window关闭后打开,并且不能同时打开
我的代码:
from tkinter import *
#root gui
root = Tk()
root.title("test")
root.geometry("300x400")
# Need three popup windows
a = ["one", "two", "three"]
b = []
def open():
for _ in range(len(a)):
top = Toplevel()
top.title("selections")
def next_window():
top.destroy()
show() # This function is supposed to show the selections of each popup window on root gui
for i in range(3):
b.append(IntVar())
b[i].set(0) # de selecting all checkboxes intiially
# checkboxes
Checkbutton(top, text=a[i], variable=b[i]).pack()
Button(top, text = "Submit", command=next_window).pack()
Button(top, text = "skip", command=top.destroy).pack() # this button is used to skip the popup if no selection required
def show():
# printing selections made on each popup window
for i in range(3):
Label(root, text=b[i].get()).pack()
mB = Button(root, text="print selections", command=open).pack()
root.mainloop()
我的问题:现在所有三个弹出窗口都同时为我打开。
你需要在 for 循环的最后调用 top.wait_window()
:
for _ in range(len(a)):
top = Toplevel(root)
top.title("selections")
def next_window():
top.destroy()
show() # This function is supposed to show the selections of each popup window on root gui
for i in range(3):
b.append(IntVar())
b[i].set(0) # de selecting all checkboxes intiially
# checkboxes
Checkbutton(top, text=a[i], variable=b[i]).pack()
Button(top, text = "Submit", command=next_window).pack()
Button(top, text = "skip", command=top.destroy).pack() # this button is used to skip the popup if no selection required
top.grab_set() # route all events to this window
top.wait_window() # wait for current window to close
我有一个包含 n 个元素的列表,我需要为每个元素创建一个弹出菜单。每个弹出窗口都会包含一些复选框。
条件: 一个新的Toplevel popup window必须在前一个Toplevel window关闭后打开,并且不能同时打开
我的代码:
from tkinter import *
#root gui
root = Tk()
root.title("test")
root.geometry("300x400")
# Need three popup windows
a = ["one", "two", "three"]
b = []
def open():
for _ in range(len(a)):
top = Toplevel()
top.title("selections")
def next_window():
top.destroy()
show() # This function is supposed to show the selections of each popup window on root gui
for i in range(3):
b.append(IntVar())
b[i].set(0) # de selecting all checkboxes intiially
# checkboxes
Checkbutton(top, text=a[i], variable=b[i]).pack()
Button(top, text = "Submit", command=next_window).pack()
Button(top, text = "skip", command=top.destroy).pack() # this button is used to skip the popup if no selection required
def show():
# printing selections made on each popup window
for i in range(3):
Label(root, text=b[i].get()).pack()
mB = Button(root, text="print selections", command=open).pack()
root.mainloop()
我的问题:现在所有三个弹出窗口都同时为我打开。
你需要在 for 循环的最后调用 top.wait_window()
:
for _ in range(len(a)):
top = Toplevel(root)
top.title("selections")
def next_window():
top.destroy()
show() # This function is supposed to show the selections of each popup window on root gui
for i in range(3):
b.append(IntVar())
b[i].set(0) # de selecting all checkboxes intiially
# checkboxes
Checkbutton(top, text=a[i], variable=b[i]).pack()
Button(top, text = "Submit", command=next_window).pack()
Button(top, text = "skip", command=top.destroy).pack() # this button is used to skip the popup if no selection required
top.grab_set() # route all events to this window
top.wait_window() # wait for current window to close