Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用grid_forget()-Python tkinter后,帧大小不再显示_Python_Tkinter_Grid_Size - Fatal编程技术网

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

使用grid_forget()-Python tkinter后,帧大小不再显示,python,tkinter,grid,size,Python,Tkinter,Grid,Size,我正在测试一种通过按下按钮(按钮稍后将成为菜单栏)来隐藏和显示帧的方法。因此,我创建了以下代码: import tkinter as tk from tkinter import * win = Tk() win.geometry("275x350") win.title("MyProgram") win.configure(background="white") frame1 = Frame(win, width=200, h

我正在测试一种通过按下按钮(按钮稍后将成为菜单栏)来隐藏和显示帧的方法。因此,我创建了以下代码:

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\u propagate
已从代码中删除(框架与其中的标签一样大)。有人能解释一下导致问题的代码中的错误吗


非常感谢;)

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

通过简单地使用
grid\u remove()
而不是使用
grid\u forget()
它就可以工作了。
但我仍然希望有人能回答我的问题,因为我认为它确实应该与
grid\u-forget()
一起工作。

不,它与
grid\u-forget()
不起作用,这就是
grid\u-remove()
存在的原因。