我在过去的一个小时里试图寻找这个问题的答案,但什么也没找到。(我觉得这个应该放在网上)。在
当你点击父图形用户界面上的一个按钮时,我正在尝试创建一个自定义弹出窗口。然后我希望用户输入变量,然后将这些变量返回到原始类。我基本上是弹出一个输入选项。但是,我要注意的是,并不是所有的选项都必须输入,它只是取决于用户的情况。用户也可以在任何时候点击“选项”按钮,所以当弹出窗口退出时,我希望它在最初点击选项按钮时返回到父图形用户界面。我所做的是:
from Tkinter import *
class Home(Frame): #This class defines the main(master) GUI
def __init__(self, master):
Frame.__init__(self, master)
#Other methods in class "Home" that get, variables, etc.
def call_popup(self):
options_popup = Options(self)
#wait_window does not work here
self.master.wait_window(options_popup)
class Options(Toplevel): #This class defines the popup GUI
def __init__(self, master):
Toplevel.__init__(self, master)
self.popup = self
#Other methods in class "Options"
def get_variable(self): #Just an example methods in class "Options"
#Simplified code but lets say I now have the variable foo in self.foo, unique to class "Options"
#I want to pass this variable back to class "Home"
def exit_popup(self):
self.popup.destroy()
#I want it to return to the spot that the user was originally at
#when they hit the "options button" in the home GUI. I also want all
#values inputted in the "options" popup to return to the class "Home"
root = Tk()
Home(root)
root.mainloop()
我相信问题的一个(很大的)部分是我对类(以及Tkinter)相当陌生。在
我看过很多关于tkinter、弹出窗口、类继承和等待窗口的问题,但不幸的是,我仍然无法理解。在
我也尝试过像这样传递类“Options”:def __init__(self, master, options):
(第3行),但是它超过了参数的数量。在
所以,主要问题是: -如何将变量从popup/class“Options”传递到class“Home”? -如何让弹出窗口/类“选项”窗口等到关闭后再返回类“主页”?在
好吧。我相信我已经在代码中实现了您遇到的问题,请参见下面的进一步解释:
你的第一个问题。您需要为popup/options对象提供一个对希望数据结束的对象的引用,在本例中是home对象。如您所见,我将它作为一个新参数传递给弹出窗口的init方法。然后我向按钮添加了一个命令,该命令将在home对象中设置entryvalue变量。这也可能是函数调用或类似的调用。在
为了让代码等待窗口完成,您应该对options_popup对象调用wait_window()方法,因为这是您正在等待的。您也可以将它移到弹出窗口的init方法,并在self上调用它。在
有关对话框窗口的详细信息,请看这个article。我认为这个对话框支持类的例子很好。在
希望有帮助!在
相关问题 更多 >
编程相关推荐