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

标签 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()

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

最佳答案

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

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

homeP.geometry("")

关于python - Tkinter - 在使用任何小部件之前最大化和最小化窗口,在我使用它们时隐藏小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53170983/

相关文章:

python - 获取给定当前点、距离和方位的纬度/经度

python - vs 代码 Python 扩展数据框未显示在输出中

python - 在 Tkinter 中制作一个粘到东方、西方和南方的小部件

Python Tkinter - 在 root.destroy() 之后从条目中获取值

python - 更改字体大小而不影响 Tkinter 按钮大小

python - Django - order_by 是如何工作的?

python - 在设备上使用 Paramiko exec_command 执行命令不起作用

python - Print 语句创建不需要的换行符

python - 如何使用日期对 Python 列表进行排序

python - 代码未附加正确的对象...为什么?