wxpython如何实现控件之间的联动关系?(比如:勾选一个复选框,显示另一个复选框)
#导入wx模块
import wx
class testbox():
def __init__(self):
#定义一个应用程序类对象
self.app=wx.App()
#创建一个顶层窗口(frame类对象)父窗体不存在None,size是窗体大小,宽、高
self.window=wx.Frame(None,title="测试控件联动效果",size=(300,300))
#定义panel对象,放在容器中比较好管理
self.panel=wx.Panel(self.window)
# 定义复选框1
self.buttonone = wx.CheckBox(self.panel, label="复选框1")
# 定义发送bug报告复选框
self.buttontwo = wx.CheckBox(self.panel, label="复选框2")
# 默认复选框2不显示
self.buttontwo.Show(False)
def GUI_layout(self):
#定义一个水平布局
boxsizer=wx.BoxSizer(wx.HORIZONTAL)
boxsizer.Add(self.buttonone,flag=wx.LEFT|wx.RIGHT|wx.TOP,border=20)#把复选框加入布局中
boxsizer.Add(self.buttontwo,flag=wx.LEFT|wx.RIGHT|wx.TOP|wx.RESERVE_SPACE_EVEN_IF_HIDDEN,border=20)
# 让布局生效
self.panel.SetSizer(boxsizer)
#绑定事件
def GUI_bind(self):
self.buttonone.Bind(wx.EVT_CHECKBOX,self.GUI_event)
#触发事件
def GUI_event(self,event):
if self.buttonone.GetValue()==True:#如果复选框1被选中则显示复选框2
print(type(self.buttonone.GetValue()))
self.buttontwo.Show(True)
def GUI_show(self):
#show()方法激活窗体
self.window.Show(True)
#运行程序
self.app.MainLoop()
if __name__ == '__main__':
#实例化类
testobj=testbox()
testobj.GUI_layout()
testobj.GUI_bind()
testobj.GUI_show()
运行效果
选择复选框1显示复选框2