使用 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
被从代码中删除一样出现(框架与其中的标签一样大)。有人可以向我解释导致问题的代码错误吗?
非常感谢 ;)
我找到了另一种方法来获得我想要的东西:
通过简单地使用 grid_remove()
而不是使用 grid_forget()
它正在工作。
但我仍然希望有人能回答我的问题,因为我认为它确实应该与 grid_forget()
一起使用。
我正在测试一种通过按下按钮来隐藏和显示框架的方法(这些按钮稍后将成为菜单栏)。所以我创建了这段代码:
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
被从代码中删除一样出现(框架与其中的标签一样大)。有人可以向我解释导致问题的代码错误吗?
非常感谢 ;)
我找到了另一种方法来获得我想要的东西:
通过简单地使用 grid_remove()
而不是使用 grid_forget()
它正在工作。
但我仍然希望有人能回答我的问题,因为我认为它确实应该与 grid_forget()
一起使用。