wxpython 学习之 --窗口分割
Posted 骑着蜗牛追太阳
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wxpython 学习之 --窗口分割相关的知识,希望对你有一定的参考价值。
#coding:utf-8 import wx import os class MyApp(wx.App): def __init__(self): super(MyApp,self).__init__() class MyFrame(wx.Frame): def __init__(self,title=\'test\',size=wx.DefaultSize): super(MyFrame,self).__init__(None,wx.ID_ANY,title=title,size=size,style=wx.DEFAULT_FRAME_STYLE^wx.MINIMIZE_BOX) self.Center() #self.SetSize(700,700) #self.SetTitle(\'aaa\') self.InitMenuBar() self.InitStatusBar() self.splitwindow() #self.Bind(wx.EVT_ERASE_BACKGROUND,self.EraseBack) def EraseBack(self,event): self.ParentWindow.SetSashPosition(0) def splitwindow(self): self.ParentWindow=wx.SplitterWindow(self) #创建分割窗口 self.lpanel=wx.Panel(self.ParentWindow) #创建左面板 self.rpanel=wx.Panel(self.ParentWindow) #创建右面板 self.lpanel.SetBackgroundColour(\'#949449\') self.rpanel.SetBackgroundColour(colour=\'RED\') self.ParentWindow.SplitVertically(self.lpanel,self.rpanel,100) self.ParentWindow.SetMinimumPaneSize(50) #设定最小的窗口不能小于50 def InitMenuBar(self): #创建一个menubar menuBar = wx.MenuBar() #创建两个menu filemenu = wx.Menu() aboutmenu = wx.Menu() #filemenu添加一个menuopen,关联的ID为wx.ID_OPEN,名字为Open,如果有状态栏,则状态栏里显示‘打开文件’ menuopen = filemenu.Append(wx.ID_OPEN,\'Open\',\'打开文件\') #filemenu添加一个menu分隔符 filemenu.AppendSeparator() menusave = filemenu.Append(wx.ID_SAVE,\'Save\',\'保存当前设置\') filemenu.AppendSeparator() menuexit = filemenu.Append(wx.ID_EXIT,\'Exit\',\'退出程序\') menuBar.Append(filemenu,\'File\') menuabout = aboutmenu.Append(wx.ID_ABOUT,\'Info\',\'Information\') menuBar.Append(aboutmenu,\'Info\') #将menu与函数绑定 self.Bind(wx.EVT_MENU,self.Exit,menuexit) self.Bind(wx.EVT_MENU,self.Info,menuabout) self.Bind(wx.EVT_MENU,self.Open,menuopen) self.Bind(wx.EVT_MENU,self.Save,menusave) self.SetMenuBar(menuBar) def Exit(self,event): print \'aaaa\' self.Close() def Open(self,event): self.dirname=\'\' self.filename=\'\' dlg = wx.FileDialog(self,\'选择文件\',self.dirname,\'\',\'*.csv*\',wx.FD_OPEN) if dlg.ShowModal() == wx.ID_OK: self.filename = dlg.GetFilename() self.dirname = dlg.GetDirectory() self.FilePath = os.path.join(self.dirname,self.filename) return self.FilePath def Save(self): #可以将要保存的东西放入本地磁盘 pass def Info(self,event): self.messageinfo=\'Author:testuser\\nDate:2019/5/21\\nVersion:0.1\' message = wx.MessageDialog(self,self.messageinfo,\'INFO\',wx.OK) message.ShowModal() message.Destroy() def InitStatusBar(self): #创建状态栏 statusbar = self.CreateStatusBar() #将状态栏分割为3个部分 statusbar.SetFieldsCount(3) #分割状态栏的比例为3:2:1,用负数表示 statusbar.SetStatusWidths([-3,-2,-1]) #每部分状态栏显示的值,当鼠标停在menu上时,0号状态栏会临时显示上面menu里的提示信息 statusbar.SetStatusText(\'1111\',0) statusbar.SetStatusText(\'2222\',1) statusbar.SetStatusText(\'3333\',2) if __name__ == \'__main__\': app = MyApp() frame = MyFrame(title=\'wx-test\',size=(400,300)) frame.Show() app.MainLoop()
运行结果:
在这里做了一些实验,总结如下:
1.在self.ParentWindow.SplitVertically(self.lpanel,self.rpanel,100)中,100即SashPosition=100,是指左边的窗口大小。
2.SashPosition=0:平均分割窗口;但是当设定为0的时候没有效果,要结合EVT_ERASE_BACKGROUND来使用
self.Bind(wx.EVT_ERASE_BACKGROUND,self.EraseBack)
def EraseBack(self,event):
self.ParentWindow.SetSashPosition(0)
3.当使用了self.Bind(wx.EVT_ERASE_BACKGROUND,self.EraseBack)后,self.ParentWindow.SplitVertically(self.lpanel,self.rpanel,100)中100便无效了,会采用EraseBack里设定的值。
以上是关于wxpython 学习之 --窗口分割的主要内容,如果未能解决你的问题,请参考以下文章
wxPython控件学习之wx.grid.Grid 表格控件
uboot学习之二----主Makefile学习之三----静默编译
集成学习之Boosting —— Gradient Boosting原理