Tkinter:使用相同的框架根据用户输入显示数据

时间:2017-08-08 12:49:06

标签: python tkinter

有没有办法使用同一帧根据用户输入显示两种不同的数据布局?例如,如果我有一个按钮来使变量为true或false,是否有办法根据该变量是真还是假来在同一帧上显示不同的文本,标签和数据?像这样:

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 个答案:

答案 0 :(得分:1)

您可以通过将命令关联到将更改框架中显示的窗口小部件的“检查”按钮来执行此操作。您可以使用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()