2017-01-18 98 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