PySimpleGUI Checkbox元素
Checkbox也是一个有两种状态的切换按钮: 选中 和 未选中。 它呈现一个矩形框,当点击时显示一个复选标记(或者当它已经有一个复选标记时将其删除)和旁边的一个标题。
通常情况下,复选框控件是为了让用户从可用选项中选择一个或多个项目。与单选按钮不同,GUI窗口中的复选框不属于任何组。因此,用户可以进行多次选择。
Checkbox类的对象是用以下特定参数声明的
PySimpleGUI.Checkbox(text, default, checkbox_color)
这些是复选框类的具体属性 –
- text – 这是一个字符串,代表显示在复选框旁边的文本。
-
default – 如果你想让这个复选框最初被选中,则设置为True。
-
checkbox_color – 你可以指定带有复选标记的盒子的背景颜色。
除了这些,还可以向构造函数提供其他常见的关键字参数,以设置从元素类继承的属性。
Checkbox类中继承但重写的两个重要方法是
- get() – 它返回该复选框的当前状态
-
update() – 该复选框发出选择改变事件。Checkbox元素的一个或多个属性在响应窗口的事件时被更新。这些属性是。
-
value – 如果是True则检查该复选框,False则清除它。
-
text – 显示在复选框旁边的文本
在下面的例子中,一组三个单选按钮代表一个学院中可用的教员流。根据所选择的院系,该院系的三个科目可供用户从可用选项中选择一个或多个。
import PySimpleGUI as psg
psg.set_options(font=("Arial Bold",14))
l1=psg.Text("Enter Name")
l2=psg.Text("Faculty")
l3=psg.Text("Subjects")
l4=psg.Text("Category")
l5=psg.Multiline(" ", expand_x=True, key='-OUT-', expand_y=True,justification='left')
t1=psg.Input("", key='-NM-')
rb=[]
rb.append(psg.Radio("Arts", "faculty", key='arts', enable_events=True,default=True))
rb.append(psg.Radio("Commerce", "faculty", key='comm', enable_events=True))
rb.append(psg.Radio("Science", "faculty", key='sci',enable_events=True))
cb=[]
cb.append(psg.Checkbox("History", key='s1'))
cb.append(psg.Checkbox("Sociology", key='s2'))
cb.append(psg.Checkbox("Economics", key='s3'))
b1=psg.Button("OK")
b2=psg.Button("Exit")
layout=[[l1, t1],[rb],[cb],[b1, l5, b2]]
window = psg.Window('Checkbox Example', layout, size=(715,250))
while True:
event, values = window.read()
print (event, values)
if event in (psg.WIN_CLOSED, 'Exit'): break
if values['comm']==True:
window['s1'].update(text="Accounting")
window['s2'].update(text="Business Studies")
window['s3'].update(text="Statistics")
if values['sci']==True:
window['s1'].update(text="Physics")
window['s2'].update(text="Mathematics")
window['s3'].update(text="Biology")
if values['arts']==True:
window['s1'].update(text="History")
window['s2'].update(text="Sociology")
window['s3'].update(text="Economics")
if event=='OK':
subs=[x.Text for x in cb if x.get()==True]
fac=[x.Text for x in rb if x.get()==True]
out="""
Name={}
Faculty: {}
Subjects: {}
""".format(values['-NM-'], fac[0], " ".join(subs))
window['-OUT-'].update(out)
window.close()
运行上述代码。选择一个院系名称,并在相应的复选按钮上打勾,以登记该选择。请注意,科目会随着教员选项的改变而改变。
按 “确定 “按钮,这样选择就会打印在多线框中,如下图所示