通过复选框添加新框架(Tkinter)

时间:2019-02-07 14:27:50

标签: tkinter

我尝试在python中创建GUI,需要您的帮助。 在此GUI中,用户应通过选择选项来优化其结果。我写了以下代码:

'''----------------frame Discharge calculation-------------------'''
self.discharge = BooleanVar()
self.discharge.set(False)
self.dischargeBut = Checkbutton(frame, text = "calculate discharge", variable = self.discharge)
self.dischargeBut.place(x=600, y=40)

frame3 = Frame(note)
note.add(frame3, text = "Discharge calculation")
self.xButton = 370
self.xText = 250
self.xText2 = 350
self.yAddText = 10
self.yAddText2 = 10

问题在于,只有在选中复选框(“计算排放量”)时,frame3才应该可见/活动。

1 个答案:

答案 0 :(得分:0)

您可以使用任何几何图形管理器使小部件可见:包装,网格和放置。所有这些还可以取消映射窗口小部件,因此不进行渲染。我认为将检查按钮与显示或删除小部件的回调函数相关联的最简单方法。

请注意,因为映射和取消映射小部件会导致包含的小部件更改其大小。

from tkinter import *

root = Tk()
root.geometry('300x200')

'''----------------frame Discharge calculation-------------------'''
discharge = BooleanVar()
discharge.set(False)

def display_calc():
    if discharge.get() == True:
        frame3.place(x=60, y=100)
    else:
        frame3.place_forget()

dischargeBut = Checkbutton(root, text="calculate discharge",
                           variable=discharge, command=display_calc)
dischargeBut.place(x=60, y=40)

# The Discharge calculation widget
frame3 = Frame(root)
Label(frame3, text='Discharge calculation').pack()

root.mainloop()

也;使用place()几乎总是一个错误的选择。了解grid()pack(),因为它们在GUI变得更加复杂时更易于使用。