繁体   English   中英

使用 grid_forget() 后帧大小不再显示 - Python tkinter

[英]Frame-size does not show up anymore after using grid_forget() - Python tkinter

我正在测试一种通过按下按钮来隐藏和显示框架的方法(这些按钮稍后将成为菜单栏)。 所以我创建了这段代码:

import tkinter as tk
from tkinter import *


win = Tk()

win.geometry("275x350")
win.title("MyProgram")
win.configure(background="white")

frame1 = Frame(win, width=200, height=200)
frame1.grid_propagate(False)
frame2 = Frame(win, width=200, height=200)
frame2.grid_propagate(False)
Label(frame1, text="Hello world", font="20").grid()
Label(frame2, text="Zweiter frame", font="20").grid()

def runGrid(run, destroy):
    run.grid(row=1, column=2)
    destroy.grid_forget()


def run2nd(run, destroy):
    run.grid(row=1, column=2)
    destroy.grid_forget()

Button(win, text="Run", command=lambda:runGrid(frame1, frame2)).grid(row=0, column=0)
Button(win, text="Run 2nd", command=lambda:run2nd(frame2, frame1)).grid(row=0, column=1)


win.mainloop()

所以这里有问题......按下第一个按钮后,第一帧出现在他想要的大小。 按下第二个按钮后,第二帧出现在他想要的大小。 但是,当您再次按下第一个按钮(在之前按下两个按钮之后)时,框架就会出现,就像从代码中删除了grid_propagate一样(框架与其中的 label 一样大)。 有人可以解释我的代码中导致问题的错误吗?

非常感谢;)

我找到了另一种方法来获得我想要的东西:

通过简单地使用grid_remove()而不是使用grid_forget()它正在工作。 但我仍然希望有人能回答我的问题,因为我认为它确实应该与grid_forget()一起使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM