PySimpleGUI - Checkbox 复选框元素

复选框也是一个切换按钮,有两种状态:选中未选中。 它显示一个矩形框,单击该框时会显示一个复选标记(或在已有复选标记时将其删除)和旁边的标题。

通常,提供复选框控件让用户从可用选项中选择一个或多个项目。 与单选按钮不同,GUI 窗口上的复选框不属于任何组。 因此,用户可以进行多项选择。

Checkbox 类的对象使用以下特定参数声明

PySimpleGUI.Checkbox(text, default, checkbox_color)

这些是 Checkbox 类特有的属性 −

  • text − 这是一个字符串,代表显示在复选框旁边的文本

  • default − 如果您希望最初选中此复选框,请设置为 True

  • checkbox_color − 您可以指定其中带有复选标记的框的背景颜色。

除此之外,其他用于设置从 Element 类继承的属性的常用关键字参数可以提供给构造函数。

Checkbox类中继承但被重写的两个重要方法是 −

  • get() − 它返回此复选框的当前状态

  • update() − Checkbox 发出选择更改事件。 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()

运行上面的代码。 选择教员姓名并在相应的复选按钮中打勾以注册选择。 请注意,随着教师选项的更改,主题也会发生变化。

按 OK 确定按钮,以便在多行框中打印选项,如下所示 −

Checkbox 复选框元素

❮ PySimpleGUI 元素类