2017-01-18 115 views
2

我有一个奇怪的问题。为了理解真正发生的事情,我尝试了自己并使用Google搜索,但没有结果。我简化了我的代码:Tkinter模式窗口不会让主窗口最大化

#mainw.py 
import tkinter as tk 
import modalw 

class Main(tk. Frame) : 
    def__init__(self, master) : 
     tk.Frame.__init__(self, master) 
     self.master = master 
     self.btn = tk.Button(master, text='modalwin', command=self.openwin) 
     self.btn.pack() 
    def openwin(self): 
     mod = modalw.Modal() 

#modalw.py 
import tkinter as tk 

class Modal(tk. Frame) : 
    def__init__(self, master) : 
     tk.Frame.__init__(self, master) 
     self.top = tk.TopLevel() 
     #I'm not sure these 3 lines of code are true 
     self.top.transient(master) 
     self.top.grab_set() 
     master.wait_window(self) 
     self.lbl = tk.Label(self.top, text='Hello') 
     self.lbl.pack() 
     self.btn2 = tk.Button(master, text='change text', command=self.change) 
     self.btn2.pack() 
    def change(self): 
     self.lbl.config(text='Good bye') 

问题是,开模态窗口后,我最小化(图标化)所有窗口(按Ctrl + d),然后当我尝试最大化(deiconify),这两个窗口上面没有最大化无论如何。有人可以解释这一点吗?这是我的错误还是应该用其他方式?

这是一个屏幕GIF:

1

对于信息:我的操作系统是Windows 7和我在其他电脑进行检查。

+0

你在使用什么操作系统?我最小化和恢复所有窗口没有麻烦在Linux中(使用XFCE'显示桌面'快捷方式)。另外,你的代码中有一些拼写错误。你也可以在你的类中使用变量'master',但是'__init__'方法没有'master'参数。 –

回答

1

嗯,操作系统可能是你的问题,因为我在Windows上 - 这一切都很好,我可以随时最大化和最小化,没有添加任何代码行。我被告知Linux也没有问题 - 所以我真的需要知道你在使用哪个操作系统。但是现在你的操作系统正在阻止你。尝试并找到一些代码来解决它。

+0

按下'modalwin'后会打开另一个窗口,然后最小化所有打开的窗口,并且它们被最大化了吗? – bzimor

+0

添加屏幕gif到我的回答 – bzimor

+0

你有没有看到我的gif,@ JerryPlayz101? – bzimor