[英]How to show/hide widgets in Tkinter?
我正在嘗試創建一個程序,在給定一系列用戶輸入的情況下執行函數。 有些用戶輸入僅在某些情況下是必需的,如果可能的話,我想在選擇了一個Checkbutton時顯示那些輸入值的Entry框和標簽,表明存在需要這些輸入的情況。 我不知道該怎么辦:
將我正在添加的標簽和條目框添加到已存在的行之間。
取消選中“檢查”按鈕時“隱藏”標簽和輸入框,而不會destroy
它們,以便在重新選中“檢查”按鈕時可以再次顯示它們而不會丟失任何已輸入的數據。
“顯示”相同的標簽和輸入框,如果在先前已經取消選中后重新選中了檢查按鈕,則該標簽和輸入框先前已被“隱藏”。
我不知道這樣的事情是否可能,但如果不是,請告訴我。 此外,我知道我可以在取消選中Checkbutton時簡單地將相關條目框的state
為DISABLED
,但是如果可能的話,我希望這些框不會出現,以免它們的存在不會混淆不熟悉的用戶需要額外投入的情況。
如果這是相關的,我在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.