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

Mir*_*j50 5 python window tkinter python-3.x

这是我写的代码.正如您所看到的,它有一个按钮,当点击时会打开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()
Run Code Online (Sandbox Code Playgroud)

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

Bry*_*ley 1

如果您在单击按钮之前手动调整窗口大小,则会遇到完全相同的问题。这个问题与最大化/最小化本身无关,它与用户说过“我希望窗口是这个大小”这一事实有关,并且 tkinter 试图通过不违背用户意愿调整窗口大小来尊重这一点。

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

homeP.geometry("")
Run Code Online (Sandbox Code Playgroud)