python做个图片分割界面_python图形化界面设计(wxpython)二分割窗口

本篇内容来自https://www.cnblogs.com/hhudaqiang/p/6566342.html

用wxpython开发一个简单的exe其实很简单的,但是在开发的过程中会遇到若干的坑、疑问、甚至bug,让人摸不清头脑!恰恰关于这方面的文档是少之又少,看来看去大家还是在官方的文档上加以引用说明,但是我们在开发的过程中遇到的问题,网上几乎找不到相关的解答。不知道是大家没遇到呢?还是遇到解决了不愿分享给大家?我本人是个自动化测试工程,在开发领域可以说是菜鸟一枚,只能把自己遇到的问题拿出来和大家分享!也希望大神们踩过的坑,解决的问题能分享出来,让我们这些小辈们能少踩坑~~好吧,进入今天的主题:wxpython分割窗研究(解决sashPosition=0无效的BUG)!

分割窗在应用的程序开发中是特别常见的,比如robotframework,以及我们python的IDE(PyCharm)的主界面都是分割窗的应用例子,图片如下:

python做个图片分割界面_python图形化界面设计(wxpython)二分割窗口_第1张图片

上面就是3个分割窗,注意的是wxpython最多只支持2个分割窗,如果开发这种分割窗只能用嵌套了!分割子窗口1与2其实是嵌套在画板1上面的,下面我也介绍如何利用Sizer布局得到这样的分割窗。

有了上图直观的认识后,我也引用个官方的例子,然后从这上面拓展,官方例子如下:

#coding=utf-8

importwxclassMyframe(wx.Frame):def __init__(self):

wx.Frame.__init__(self,None)

self.minpane=0

self.initpos=0

self.MakeMenuBar()

self.sp=wx.SplitterWindow(self)#创建一个分割窗

self.p1=wx.Panel(self.sp,style=wx.SUNKEN_BORDER) #创建子面板

self.p2=wx.Panel(self.sp,style=wx.SUNKEN_BORDER)

self.p1.SetBackgroundColour("pink")

self.p2.SetBackgroundColour("blue")

self.p1.Hide()#确保备用的子面板被隐藏

self.p2.Hide()

self.sp.Initialize(self.p1)#初始化分割窗

self.Bind(wx.EVT_SPLITTER_SASH_POS_CHANGING,self.OnSashChanging,self.sp)

self.Bind(wx.EVT_SPLITTER_SASH_POS_CHANGED,self.OnSashChanged,self.sp)def OnSplitV(self, evt): #响应垂直分割请求

self.sp.SplitVertically(self.p1, self.p2, self.initpos)defMakeMenuBar(self):

menu=wx.Menu()

item=menu.Append(-1,"Split horizontally")

self.Bind(wx.EVT_MENU,self.OnSplitH,item)

self.Bind(wx.EVT_UPDATE_UI,self.OnCheckCanSplit,item)

item=menu.Append(-1,"Split vertically")

self.Bind(wx.EVT_MENU,self.OnSplitV,item)

self.Bind(wx.EVT_UPDATE_UI,self.OnCheckCanSplit,item)

item=menu.Append(-1,"Unsplit")

self.Bind(wx.EVT_MENU,self.OnUnsplit,item)

self.Bind(wx.EVT_UPDATE_UI,self.OnCheckCanUnsplit,item)

menu.AppendSeparator()

item=menu.Append(-1,"Set initial sash position")

self.Bind(wx.EVT_MENU,self.OnSetPos,item)

item= menu.Append(-1, "Set minimum pane size")

self.Bind(wx.EVT_MENU,self.OnSetMin,item)

menu.AppendSeparator()

mbar=wx.MenuBar()

mbar.Append(menu,"Splitter")

self.SetMenuBar(mbar)defOnSashChanging(self,evt):print "OnSashChanging:",e

你可能感兴趣的:(python做个图片分割界面)