关闭顶级 Tkinter window
Closing a Toplevel Tkinter window
我正在努力自学 Python 对于这个可能很愚蠢的问题,我深表歉意,但这几天让我发疯了。我在这里查看了关于同一主题的其他问题,但似乎仍然无法解决这个问题。
我创建了一个顶级 window 来询问用户提示,并希望 window 在用户按下他们选择的按钮时关闭。这就是问题所在,我无法因为爱情或金钱而关闭它。我的代码包含在下面。
非常感谢您的帮助。
from Tkinter import *
root = Tk()
board = Frame(root)
board.pack()
square = "Chat"
cost = 2000
class buyPrompt:
def __init__(self):
pop = Toplevel()
pop.title("Purchase Square")
Msg = Message(pop, text = "Would you like to purchase %s for %d" % (square, cost))
Msg.pack()
self.yes = Button(pop, text = "Yes", command = self.yesButton)
self.yes.pack(side = LEFT)
self.no = Button(pop, text = "No", command = self.noButton)
self.no.pack(side = RIGHT)
pop.mainloop()
def yesButton(self):
return True
pop.destroy
def noButton(self):
return False
我尝试了很多不同的方法 pop.destroy
但 none 似乎有效,我尝试过的是;
pop.destroy()
pop.destroy
pop.exit()
pop.exit
谢谢
调用的方法确实是destroy
,在pop
对象上。
但是,在 yesButton
方法内部,pop
指的是未知的东西。
初始化你的对象时,在__init__
方法中,你应该把pop
项目作为self
的一个属性:
self.pop = Toplevel()
然后,在您的 yesButton
方法中,调用 self.pop
对象的 destroy
方法:
self.pop.destroy()
关于pop.destroy
和pop.destroy()
的区别:
在Python中,几乎一切都是对象。所以方法也是对象。
写pop.destroy
时,指的是方法对象,名称为destroy
,属于pop
对象。它与编写 1
或 "hello"
基本相同:它不是语句,或者如果您愿意,也不是 动作 .
当你写pop.destroy()
时,你告诉Python调用pop.destroy
对象,也就是执行它的__call__
方法。
换句话说,写 pop.destroy
什么都不做(除了在交互式解释器中 运行 时打印 <bound method Toplevel.destroy of...>
之类的东西),而 pop.destroy()
将有效地 运行 pop.destroy
方法。
我正在努力自学 Python 对于这个可能很愚蠢的问题,我深表歉意,但这几天让我发疯了。我在这里查看了关于同一主题的其他问题,但似乎仍然无法解决这个问题。
我创建了一个顶级 window 来询问用户提示,并希望 window 在用户按下他们选择的按钮时关闭。这就是问题所在,我无法因为爱情或金钱而关闭它。我的代码包含在下面。
非常感谢您的帮助。
from Tkinter import *
root = Tk()
board = Frame(root)
board.pack()
square = "Chat"
cost = 2000
class buyPrompt:
def __init__(self):
pop = Toplevel()
pop.title("Purchase Square")
Msg = Message(pop, text = "Would you like to purchase %s for %d" % (square, cost))
Msg.pack()
self.yes = Button(pop, text = "Yes", command = self.yesButton)
self.yes.pack(side = LEFT)
self.no = Button(pop, text = "No", command = self.noButton)
self.no.pack(side = RIGHT)
pop.mainloop()
def yesButton(self):
return True
pop.destroy
def noButton(self):
return False
我尝试了很多不同的方法 pop.destroy
但 none 似乎有效,我尝试过的是;
pop.destroy()
pop.destroy
pop.exit()
pop.exit
谢谢
调用的方法确实是destroy
,在pop
对象上。
但是,在 yesButton
方法内部,pop
指的是未知的东西。
初始化你的对象时,在__init__
方法中,你应该把pop
项目作为self
的一个属性:
self.pop = Toplevel()
然后,在您的 yesButton
方法中,调用 self.pop
对象的 destroy
方法:
self.pop.destroy()
关于pop.destroy
和pop.destroy()
的区别:
在Python中,几乎一切都是对象。所以方法也是对象。
写pop.destroy
时,指的是方法对象,名称为destroy
,属于pop
对象。它与编写 1
或 "hello"
基本相同:它不是语句,或者如果您愿意,也不是 动作 .
当你写pop.destroy()
时,你告诉Python调用pop.destroy
对象,也就是执行它的__call__
方法。
换句话说,写 pop.destroy
什么都不做(除了在交互式解释器中 运行 时打印 <bound method Toplevel.destroy of...>
之类的东西),而 pop.destroy()
将有效地 运行 pop.destroy
方法。