这样做的一种方法是让您的主窗口(@987654321@)等待弹出窗口运行。
这是通过正常创建一个弹出窗口来完成的(我假设使用Toplevel() 小部件),然后调用root.wait_window(theToplevel)。
我创建了一个小例子来说明这是如何完成的,我认为它应该会给你一些想法。
基本上它会提示您输入int。成功后会出现一个弹出窗口(称为operation 2),提示您输入另一个int。 operation 2完成后,主窗口OK按钮的命令变为operation 3,会销毁窗口。但是,我也可以在调用root.wait_window(new) 之后简单地调用op3;一旦弹出窗口完成(或op3 应该做的任何事情),这将破坏主窗口。
我还包含了一个简单地打印范围的 for 循环;这是为了说明在Toplevel 完成收集数据之前,什么都没有。
示例代码如下:
from Tkinter import *
from tkMessageBox import *
root = Tk()
val = 0
val2 = 0
def op1():
global e, l, root, val, e2, b, new
try:
val = int(e.get())
except ValueError:
showerror("Error", "Enter an int")
else:
new = Toplevel()
e2 = Entry(new)
e2.pack(side = LEFT)
b2 = Button(new, text = "OK", command = op2)
b2.pack(side = RIGHT)
l2 = Label(new, text = "Enter new number to multiply %d by" %val)
l2.pack()
e2.focus_force()
root.wait_window(new)
for i in range(5):
print (i + 1)
def op2():
global val
try:
val2 = int(e2.get())
except ValueError:
showerror("Error", "Enter an int")
e2.focus_force()
else:
val = val * val2
l.config(text = "This is your total: %d Click OK to exit" %val)
new.destroy()
b.config(command = op3)
def op3():
root.destroy()
e = Entry(root)
e.pack(side = LEFT)
b = Button(root, text = "OK", command = op1)
b.pack(side = RIGHT)
l = Label(root, text = "Enter a number")
l.pack()
root.mainloop()
我希望这可以帮助您解决问题。