Tkinter-在使用任何小部件之前最大化和最小化窗口,当我使用它们时将其隐藏

时间:2018-11-06 11:28:22

标签: python python-3.x tkinter window

这是我编写的代码。如您所见,它具有一个按钮,单击该按钮将打开一个Text,您可以在其中输入内容。它可以正常工作,如果您单击按钮,则窗口会调整大小。
但是我注意到,如果在启动程序后立即最大化和最小化窗口(即,我要做的第一件事就是最大化和最小化窗口),则窗口不会调整大小以适合整个框架(单击按钮),我的小部件就被隐藏了。

from tkinter import *

def Home():
    global homeP
    homeP = Tk()
    homeP.title('Grades')

    enterButton = Button(homeP, text='Enter Grades', bg='blue', fg='white', command=enterG)
    enterButton.grid(row=1, column=0, padx=(5,5), pady=(5,2), sticky="e")

    homeP.mainloop()

curFrame = ''

def enterG():
    global homeP
    global eGrade
    global curFrame

    if curFrame == 'e':
        return
    if 'eGrade' not in globals(): #Prevent frames from stacking up on one another
        eGrade = Frame(homeP)
        enterGrades = Text(eGrade, width=64, height=10)
        enterGrades.grid(row=0, column=0)

        eGrade.grid(row=2, column=0, columnspan=2, padx=(10,10), pady=(1,5))
    else:
        eGrade.grid(row=2, column=0, columnspan=2, padx=(10,10), pady=(1,5))
    curFrame = 'e'

    # for name, value in globals().copy().items():
    #   print(name, value)
Home()

有关为什么会发生这种情况以及如何防止这种情况的任何帮助?

1 个答案:

答案 0 :(得分:1)

如果在单击按钮之前手动调整窗口大小,将会遇到完全相同的问题。问题不在于最大化/最小化本身,而是与用户说“我希望窗口具有这种大小”有关,并且tkinter试图通过不调整大小来兑现这一事实。违反用户意愿的窗口。

解决方案是在添加或删除窗口小部件之前重置窗口的大小。在enterG中的全局语句之后添加以下代码行:

homeP.geometry("")