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()