簡體   English   中英

如何在Tkinter中顯示/隱藏小部件?

[英]How to show/hide widgets in Tkinter?

我正在嘗試創建一個程序,在給定一系列用戶輸入的情況下執行函數。 有些用戶輸入僅在某些情況下是必需的,如果可能的話,我想在選擇了一個Checkbutton時顯示那些輸入值的Entry框和標簽,表明存在需要這些輸入的情況。 我不知道該怎么辦:

  • 將我正在添加的標簽和條目框添加到已存在的行之間。

  • 取消選中“檢查”按鈕時“隱藏”標簽和輸入框,而不會destroy它們,以便在重新選中“檢查”按鈕時可以再次顯示它們而不會丟失任何已輸入的數據。

    • 示例:我選擇Checkbutton,在出現的新框中輸入數據,然后取消選中Checkbutton(導致不再顯示框)。 如果我然后重新選擇Checkbutton,我上次選中Checkbutton時輸入的數據應該仍然存在。
  • “顯示”相同的標簽和輸入框,如果在先前已經取消選中后重新選中了檢查按鈕,則該標簽和輸入框先前已被“隱藏”。

我不知道這樣的事情是否可能,但如果不是,請告訴我。 此外,我知道我可以在取消選中Checkbutton時簡單地將相關條目框的stateDISABLED ,但是如果可能的話,我希望這些框不會出現,以免它們的存在不會混淆不熟悉的用戶需要額外投入的情況。

如果這是相關的,我在Windows 10 Pro上使用Python 2.7.9,Anaconda 2.2.0(64位)和Tkinter版本81008。 如果我遺漏任何有用的信息,請隨時索取更多信息。 提前感謝您提供的任何幫助。

我想你想要grid_remove()

來自http://www.tkdocs.com/tutorial/grid.html

網格的“遺忘”方法,作為一個或多個從屬小部件的列表作為參數,可用於從它們當前所屬的網格中移除從屬。 這並不會完全破壞小部件,而是將其從屏幕上移除,就好像它首先沒有網格化一樣。 您可以稍后再次對其進行網格化,但您最初分配的任何網格選項都將丟失。

除了將記住網格選項之外,網格的“移除”方法的工作方式相同。

丑陋的例子如下。 使用網格選項和條目文本來查看它們是如何保留的。

def toggle_entry():
    global hidden
    if hidden:
        e.grid()
    else:
        e.grid_remove()
    hidden = not hidden

hidden = False
root = tk.Tk()
e = tk.Entry(root)
e.grid(row=0, column=1)
tk.Button(root, text='Toggle entry', command=toggle_entry).grid(row=0, column=0)
root.mainloop()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM