Python-难点-复选框

1 需求

需求1:获取所有checkbox是否勾选状态;
需求2:全选和去全选;
需求3:任意一个选项去勾选,则全选框去勾选;
需求4:获取当前所有勾选选项的值


2 接口


3 示例

"""
实现如下需求:
需求1:获取所有checkbox是否勾选状态;
需求2:全选和去全选;
需求3:任意一个选项去勾选,则全选框去勾选;
需求4:获取当前所有勾选选项的值
"""
import wx


# 需求1
def on_button(event):
    text_ctrl.Clear()
    for cb in checkbox:
        text_ctrl.AppendText(f"{cb.GetLabel()}状态:{cb.IsChecked()}\n")


# 需求2
def on_check_all(event):
    is_checked = checkbox0.IsChecked()
    for cb in checkbox:
        cb.SetValue(is_checked)


# 需求3
def on_checkbox(event):
    all_check = all(cb.IsChecked() for cb in checkbox)
    checkbox0.SetValue(all_check)

    # 需求4
    text_ctrl.Clear()
    for cb in checkbox:
        if cb.IsChecked():
            text_ctrl.AppendText(cb.GetLabel())


app = wx.App()

frame = wx.Frame(None, title="wxPython Demo")

panel = wx.Panel(frame)

sizer = wx.BoxSizer(wx.HORIZONTAL)

checkbox = []

checkbox0 = wx.CheckBox(panel, label="全选")
checkbox1 = wx.CheckBox(panel, label="选项1")
checkbox2 = wx.CheckBox(panel, label="选项2")
checkbox3 = wx.CheckBox(panel, label="选项3")
checkbox.append(checkbox1)
checkbox.append(checkbox2)
checkbox.append(checkbox3)
button = wx.Button(panel, label="点击")
text_ctrl = wx.TextCtrl(panel, size=(100, 100), style=wx.TE_MULTILINE | wx.TE_READONLY)

sizer.Add(checkbox0, 0, wx.ALL, 10)
sizer.Add(checkbox1, 0, wx.ALL, 10)
sizer.Add(checkbox2, 0, wx.ALL, 10)
sizer.Add(checkbox3, 0, wx.ALL, 10)
sizer.Add(button, 0, wx.ALL, 10)
sizer.Add(text_ctrl, 1, wx.ALL, 10)

panel.SetSizer(sizer)

checkbox0.Bind(wx.EVT_CHECKBOX, on_check_all, checkbox0)
checkbox1.Bind(wx.EVT_CHECKBOX, on_checkbox, checkbox1)
checkbox2.Bind(wx.EVT_CHECKBOX, on_checkbox, checkbox2)
checkbox3.Bind(wx.EVT_CHECKBOX, on_checkbox, checkbox3)

button.Bind(wx.EVT_BUTTON, on_button)

frame.Show()

frame.Maximize()

app.MainLoop()

4 参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值