[英]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.