许多IM软件登录界面如图图1所示,点击“服务器设置”按钮,面板展开,服务器部分显示出来,如图2所示;再点击“服务器设置”按钮,面板折叠,服务器部分隐藏起来,回到图1。
下面介绍一下如何用wxPython实现这种效果。使用wxPython实现这种效果,关键是使用wx.BoxSizer管理整个面板,然后使用wx.BoxSizer类的Hide()、Show()方法将相应的控件隐藏或者显示出来.
def OnTouch(self, event):
if self.isShown: #如果当前控件已显示
self.setserverBtn.SetLabel(u'服务器设置↓') #更新按钮标签
self.sizer.Hide(self.sbsizer) #隐藏服务器设置部分
self.isShown = False #服务器设置部分当前已隐藏
self.SetClientSize((330,118)) #更新面板尺寸
else:
self.sizer.Show(self.sbsizer) #如果当前控件已隐藏
self.setserverBtn.SetLabel(u'服务器设置↑') #更新按钮标签
self.isShown = True #服务器设置部分当前已显示
self.SetClientSize((330,200)) #更新面板尺寸
self.sizer.Layout() #关键所在,强制sizer重新计算并布局sizer中的控件
代码中的self.sbsizer是用来管理服务器设置部分的StaticBoxSizer。从以上代码可以总结出实现面板折叠与展开的方法如下:
1. 使用BoxSizer管理控件布局;
2. 使用Hide()/Show()函数将控件隐藏/显示;
3. 更新面