在窗口中加了个状态栏后,在切换页面时就出现了格式错乱的问题。
具体为从首页进入查看学生信息页面时,会覆盖左边操作按钮部分
解决方法:
回头看代码
class UserOperation(wx.Frame):
'''
操作界面
'''
def __init__(self, *args, **kw):
# ensure the parent's __init__ is called
super(UserOperation, self).__init__(*args, **kw)
# 设置窗口屏幕居中
self.Center()
# 创建窗口
self.pnl = wx.Panel(self)
# 调用操作界面函数
self.OperationInterface()
# 创建菜单栏
self.menu()
self.status_bar() #这行位置不对
调用self.status_bar这行代码的位置改动一下即可
def __init__(self, *args, **kw):
# ensure the parent's __init__ is called
super(UserOperation, self).__init__(*args, **kw)
# 状态栏
self.status_bar()
# 设置窗口屏幕居中
self.Center()
# 创建窗口
self.pnl = wx.Panel(self)
# 调用操作界面函数
self.OperationInterface()
# 创建菜单栏
self.menu()
**一定要放在self.pnl = wx.Panel(self)
这行之前!**否则可能会出现各种各样的错误
最后附上status_bar()函数的代码,说一下基础的使用。
statusbar.SetStatusWidths([-1, -1, 100])
是设定状态栏的长度比例的
负数代表比例,正数是长度绝对值,以-2,-1,100为例,先会给最右边分配100的长度,然后左边剩下的空间按2:1的比例分配给前两部分
def status_bar(self):
statusbar = self.CreateStatusBar() # 底部状态栏
statusbar.SetFieldsCount(3)
# 分割状态栏的比例为2:2:1,用负数表示
statusbar.SetStatusWidths([-1, -1, 100])
# 每部分状态栏显示的值,当鼠标停在menu上时,0号状态栏会临时显示上面menu里的提示信息
statusbar.SetStatusText('1111', 0)
statusbar.SetStatusText('2222', 1)
statusbar.SetStatusText('3333', 2)
使用SetStatusText()就可以实时推送新的内容到状态栏
def OnLabelleftClick(self, event):
# 每次点击更新状态栏推送新的位置,i是状态栏第几格
self.statusbar.SetStatusText('Row {0}, Col{1}'.format(event.GetRow()+1, event.GetCol()+1), i=1)
event.Skip() # 这行必须加