gpt4 book ai didi

Python Tkinter 子窗口问题

转载 作者:太空宇宙 更新时间:2023-11-04 07:42:59 25 4
gpt4 key购买 nike

您好,我正在努力在 python 中使用多个 tkinter 窗口。基本上,我有两个类也与两个不同的窗口相关。主类显示主窗口 (parentWindow),另一个类显示第二个窗口 (childWindow)。以下代码启动主窗口:

#START THE APPLICATION
root = Tkinter.Tk()
root.title ("GEMEINDESTECKBRIEF-Menü")
# My main Application
runGUI = MainWorkspaceConfig (root)
root.mainloop ()

到目前为止没有任何问题!

现在我试图打开第二个窗口调用主类中的函数(打开窗口的一种 onClickFunction)

def opendirFactsheetHochwasserGebaeude (self) :
#validates the workspace resp. database directory and
#print self.checkFactsheet2.get()
#print self.inputSpace1.get()

try:
if self.checkFactsheet2.get()==1 :

if self.inputSpace1.get() or self.inputSpace2.get() != "":
#write workspace environment to __initFile__
if self.inputSpace1.get() != "":
self.writeWorkspEnv(self.inputSpace1.get())
#Copy file in seperate thread
start_new_thread(self.copyDefaultFactoWorkspace,())
if self.inputSpace2.get() != "":
self.writeWorkspEnv(self.inputSpace2.get())
# !!!!!!! START SECOND WINDOW !!!!!
facthwgeb = Tkinter.Tk()
facthwgeb.title ("Factsheet Hochwasser-Gebäude")
runGUI = Factsheet_hochwassergebaeude (facthwgeb)
facthwgeb.mainloop ()
#facthwgeb.protocol('WM_DELETE_WINDOW', runGUI.closeFactsheetHochwGeb)
else:
#self.inputSpace1.get() and self.inputSpace2.get () =="":
tkMessageBox.showwarning ("Keine Arbeitsumgebung festgelegt", "Bitte entweder einen neuen Workspace anlegen oder eine bestehende Datenbank auswählen!")
self.selectBox1.deselect()

仍然一切正常!!窗口按预期打开,并且 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() 不仅会关闭 secondWindow (childWindow),还会关闭 MainWindow (parentWindow)。 self.tkinterFrame.destroy() 函数清除窗口中的所有小部件,但窗口仍然处于事件状态且可见!!

那么,有什么想法可以解决这个问题吗?将感谢任何解决方案!!!!

最佳答案

不要创建第二个 Tk() 实例;你可以/应该只有一个根。

使用 Toplevel facthwgeb 的小部件。另外,去掉 facthwgeb.mainloop() 调用,同样,应该只调用一次。

关于Python Tkinter 子窗口问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15496835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com