簡體   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