wxpython多窗口怎么写_wxpython 学习之 --窗口分割

#coding:utf-8

importwximportosclassMyApp(wx.App):def __init__(self):

super(MyApp,self).__init__()classMyFrame(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)

defEraseBack(self,event):

self.ParentWindow.SetSashPosition(0)defsplitwindow(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) #设定最小的窗口不能小于50defInitMenuBar(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)defExit(self,event):print 'aaaa'self.Close()defOpen(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)returnself.FilePathdefSave(self):#可以将要保存的东西放入本地磁盘

pass

defInfo(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()defInitStatusBar(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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果您想将一个已经创建为分割窗口wxPython 窗口转换为普通窗口,则需要使用 wx.SplitterWindow 的 ReplaceWindow() 方法。该方法允许您将一个窗口替换为另一个窗口,并返回旧窗口的引用。因此,您可以将 wx.SplitterWindow 替换为其子窗口之一,从而将其转换为普通窗口。 下面是一个示例代码,展示了如何将一个包含两个 wx.Panel 的 wx.SplitterWindow 转换为普通窗口: ```python import wx class MyFrame(wx.Frame): def __init__(self, parent): wx.Frame.__init__(self, parent, title="Splitter Window Example") # 创建一个 wx.SplitterWindow,并向其中添加两个 wx.Panel splitter = wx.SplitterWindow(self) panel1 = wx.Panel(splitter) panel2 = wx.Panel(splitter) splitter.SplitHorizontally(panel1, panel2) # 创建一个按钮,点击它将把 splitter 替换为 panel1 button = wx.Button(panel1, label="Replace Splitter with Panel 1") button.Bind(wx.EVT_BUTTON, lambda evt: self.replace_splitter_with_panel(splitter, panel1)) # 将按钮添加到 panel1 上 sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(button, 0, wx.ALIGN_CENTER) panel1.SetSizer(sizer) def replace_splitter_with_panel(self, splitter, panel): # 将 splitter 替换为 panel,并返回旧的 splitter 引用 old_splitter = splitter.ReplaceWindow(splitter, panel) # 销毁旧的 splitter old_splitter.Destroy() if __name__ == '__main__': app = wx.App() frame = MyFrame(None) frame.Show() app.MainLoop() ``` 在上面的示例代码中,我们创建了一个包含两个 wx.Panel 的 wx.SplitterWindow,并将其分割为水平方向。然后,我们创建了一个按钮,点击它将把 wx.SplitterWindow 替换为其中的一个子窗口。在 replace_splitter_with_panel() 方法中,我们使用 ReplaceWindow() 方法将 splitter 替换为 panel1,并销毁旧的 splitter。这样,我们就成功将一个 wx.SplitterWindow 转换为普通窗口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值