2017-08-08 72 views
0

有沒有一種方法可以根據用戶輸入使用相同的框架來顯示兩種不同的數據佈局?例如,如果我有一個按鈕來設置變量是true還是false,是否有一種方法可以根據該變量是true還是false來在同一幀上顯示不同的文本,標籤和數據?這樣的事情:Tkinter:使用相同的框架根據用戶輸入顯示數據

self.frame1 = Frame(root) 
self.frame1.pack() 

def page1(self): 
    self.text1 = Label(self.frame1, text='Text 1') 
    self.text1.pack() 

def page2(self): 
    self.text2 = Label(self.frame1, text='Text 2') 
    self.text2.pack() 

self.page1_or_page2 = True 

if self.page1_or_page2 == True: 
    page1(self) 
else: 
    page2(self) 

此外,重疊幀數據是實現這樣的最佳方式?謝謝!

回答

1

您可以通過將命令關聯到將更改框架中顯示的小部件的Checkbutton來完成此操作。您可以使用pack_forget刪除顯示在框架中的小部件,然後再打包新小部件。

下面是一個例子:

import tkinter as tk 

def toggle_details(): 
    if variable.get(): 
     text1.pack_forget() 
     text2.pack() 
    else: 
     text2.pack_forget() 
     text1.pack() 

root = tk.Tk() 

frame = tk.Frame(root) 
text1 = tk.Label(frame, text='short text') 
text2 = tk.Label(frame, text='short text\n------\nwith details below') 

variable = tk.BooleanVar(root) 
button = tk.Checkbutton(root, text='Show details', command=toggle_details, variable=variable) 

text1.pack() 
frame.pack() 
button.pack(side='bottom') 

root.mainloop() 
+0

偉大的答案!訂單地理方法也有'pack_forget()'這樣的東西嗎? – GreenSaber

+0

@Evan是的,'grid_forget'和'place_forget'也存在。 –

+0

太棒了!那麼讓我今天與代碼搞混了,我會保持我的帖子更新! – GreenSaber

相關問題