#For python 3 imports:
import tkinter as tk
from tkinter import ttk
# for python 2 imports:
# import Tkinter as tk
# import ttk
root = tk.Tk()
root.withdraw()
for i in range(0,5):
x = tk.Toplevel(root)
x.title("Error Box!")
x.geometry("150x75+0+0")
x.resizable(False, False)
ttk.Label(x, text = "oops").pack()
ttk.Button(x, text = " OK ", command = x.destroy).pack(side=tk.BOTTOM)
root.mainloop()
针对您对使用计数器的评论,请参阅以下代码:
^{pr2}$
更好的是这里有一个例子,它将项目放在列表中,这样我们就不需要计数器了。在
#For python 3 imports:
import tkinter as tk
from tkinter import ttk
# for python 2 imports:
# import Tkinter as tk
# import ttk
root = tk.Tk()
root.withdraw()
list_of_windows = []
def close_window(tw):
i = list_of_windows.index(tw)
list_of_windows[i].destroy()
del list_of_windows[i]
if len(list_of_windows) == 0:
root.destroy()
print("root destroyed!")
for i in range(0,5):
x = tk.Toplevel(root)
x.title("Error Box!")
x.geometry("150x75+0+0")
x.resizable(False, False)
ttk.Label(x, text="oops").pack()
ttk.Button(x, text=" OK ", command=lambda tw=x: close_window(tw)).pack(side=tk.BOTTOM)
x.protocol("WM_DELETE_WINDOW", lambda tw=x: close_window(tw))
list_of_windows.append(x)
root.mainloop()
解决方案可能是在这里使用
TopLevel()
。这将允许所有窗口弹出,您也可以设置客户messagebox样式。在下面是一个简单的示例,它将同时打开所有窗口,同时隐藏根窗口。下面将把所有的窗口堆叠在一起,你可以移动它们。如果愿意,还可以提供一些跟踪变量,以便在不同的位置打开每个窗口。在
针对您对使用计数器的评论,请参阅以下代码:
^{pr2}$更好的是这里有一个例子,它将项目放在列表中,这样我们就不需要计数器了。在
我的结论是: 使用tk消息框不是完成任务的最佳方法, 因为消息框是模态的,没有直接的方法来改变它。 因此,我只得到了一个形状类似于消息框的表单,并以所需的数量生成了它们。 以以下代码结束:
它很好地满足了我的需要。感谢Nae和vasilisg。他们的友好回应让我找到了一个有效的代码。在
相关问题 更多 >
编程相关推荐