Tkinter模态窗口不允许主窗口最大化

时间:2017-01-18 14:47:07

标签: python-3.x tkinter modal-dialog toplevel

我有一个奇怪的问题。要了解到底发生了什么,我尝试了自己并用Google搜索,但没有结果。我简化了我的代码:

#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') 

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

这是一个屏幕gif:

1

有关信息:我的操作系统是Windows 7,我在其他PC上检查过。

1 个答案:

答案 0 :(得分:1)

嗯,操作系统可能是你的问题,因为我在Windows上 - 这一切都运行良好,我可以随时最大化和最小化,没有添加代码行。我被告知Linux也没有问题 - 所以我真的需要知道你正在操作什么操作系统。但是现在你的操作系统正在阻止你。尝试找一些代码来修复它。