2017-08-08 9 views
0

同じフレームを使用して、ユーザー入力に基づいて2つの異なるレイアウトのデータを表示する方法はありますか?たとえば、変数を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

関連する問題