你好, 我很难在python中使用多个tkinter窗口。 基本上,我有两个类,它们也与两个不同的窗口相关。 main类显示主窗口(parentWindow),另一个类显示第二个窗口(childWindow)。 以下代码启动主窗口:
#START THE APPLICATION
root = Tkinter.Tk()
root.title ("GEMEINDESTECKBRIEF-Menü")
# My main Application
runGUI = MainWorkspaceConfig (root)
root.mainloop ()
到目前为止没有任何问题!在
现在我尝试打开另一个窗口,调用Main类中的函数(类似于onClickFunction来打开窗口)
^{pr2}$一切都很好!!窗口按预期打开,并且显示GUI小部件并可用。 完成给定任务后,窗口必须关闭,所有问题都在这里开始!!! 为了退出窗口,我使用了一个带有命令功能的按钮,如下所示:
def closeFactsheetHochwGeb (self):
try:
if self.inputSpace1.get() and self.inputSpace2.get() != "":
with open('%s/__initFile__.txt'%os.path.dirname(os.path.realpath(__file__)), 'r') as file:
# read a list of lines into data
data = file.readlines()
data[13] = self.inputSpace1.get()+"\n"
data[14] = self.inputSpace2.get()+"\n"
# and write everything back
with open('%s/__initFile__.txt'%os.path.dirname(os.path.realpath(__file__)), 'w') as file:
file.writelines( data )
file.close()
# self.tkinterFrame.destroy()
self.tkinterFrame.quit()
self.tkinterFrame.quit()不仅关闭第二个窗口(子窗口),还关闭主窗口(父窗口)。self.tkinterFrame.destroy()函数清除窗口中的所有窗口小部件,但窗口仍处于活动状态且可见!!在
那么,有什么办法解决这个问题吗? 感谢您的任何解决方案!!!!!在
不要创建第二个
Tk()
实例;您可以/应该只有一个根。在对
facthwgeb
使用Toplevel小部件。另外,请去掉facthwgeb.mainloop()
调用,因为应该只有一个对此调用。在是的,我终于找到了解决问题的办法!!!!在
第一步:在启动ChildWindow的主类中,我将函数
def opendirFactsheetHochwasserGebaeude (self) :
中的代码从Tkinter.Tk()
更改为Tkinter.Toplevel(parent)
=>;父窗口引用根窗口。更改Tkinter typ后,facthwgeb.mainloop()
也被清除,因为它是由主窗口(父窗口)提供的第二步:在实现ChildWindow的第二个类中,函数
def closeFactsheetHochwGeb (self):
私自拥有命令self.tkinterFrame.destroy()
,该命令清除了框架的小部件,而不是窗口本身,self.tkinterFrame.quit()
关闭了主窗口和ChildWindow=>;因此这两个命令都是无用的!!在最后一步:最终的解决方案是将
self.tkinterFrame.destroy ()
更改为self.tkinterFrame.master.destroy()
!!在有时候复杂的事情可以很简单!!:-)
试试这个
self.Frame1.destroy()
或者不管你叫什么名字 有时候你可以吃这个self.Frame1 = tk.Frame(top)
相关问题 更多 >
编程相关推荐