如何使windows在python tkinter中一次显示一个窗口?

2024-10-03 19:24:06 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用tkinter使windows一次显示一个?例如,如果我输入6作为输入,并使用按钮调用函数,我需要它显示6个窗口,但每次显示一个窗口。它只会在按下上一个窗口的按钮后提示我下一个窗口

我尝试使用for循环在输入范围内循环,并基于该范围创建带有按钮的新窗口,但问题是它们都同时显示:

from tkinter import *
from tkinter.ttk import *

root = Tk()
root.title("Multiple windows")

def multiplewindows():
    for i in range(int(number.get())):
        tempwindow = Toplevel()
        tempwindow.title(f"Window {i+1}")
        tempbutton = Button(tempwindow, text=f"Button {i+1}")
        tempbutton.pack(padx=10, pady=10)

number = Entry(root, width=5)
number.pack(padx=10, pady=10)
button = Button(root, text="Show", command=multiplewindows)
button.pack(padx=10, pady=10)

root.mainloop()

在新创建的窗口中按下按钮后,是否有任何方法暂停for循环并允许其继续


Tags: fromimportnumberfortitletkinterwindowsbutton
2条回答

我想你不需要loop来做这个

def multiplewindows():
  j=int(number.get())
  tempwindow = Toplevel()
  tempwindow.title(f"Window {j}")
  tempbutton = Button(tempwindow, text=f"Button {j}")
  tempbutton.pack(padx=10, pady=10)

如果您想使用for循环来实现这一点

def multiplewindows():
  j=int(number.get())
  for i in range(int(number.get())):
    if (i+1)==j:
      tempwindow = Toplevel()
      tempwindow.title(f"Window {j}")
      tempbutton = Button(tempwindow, text=f"Button {j}")
      tempbutton.pack(padx=10, pady=10)

最简单的方法是使用内置的tkinter方法推荐acw1668,该方法通过wait_window()调用

from tkinter import *
from tkinter.ttk import *

root = Tk()
root.title("Multiple windows")

def multiplewindows():
    for i in range(int(number.get())):
        tempwindow = Toplevel()
        tempwindow.title(f"Window {i+1}")
        tempbutton = Button(tempwindow, text=f"Button {i+1}", command=tempwindow.destroy)
        tempbutton.pack(padx=10, pady=10)
        tempwindow.wait_window()

number = Entry(root, width=5)
number.pack(padx=10, pady=10)
button = Button(root, text="Show", command=multiplewindows)
button.pack(padx=10, pady=10)



root.mainloop()

在这里,我们创建了一个带有forloop的函数,该函数等待窗口被销毁,并向按钮添加了一个命令来销毁窗口

相关问题 更多 >