WxFrame的样式
每个wxPython窗口部件都要求一个样式参数。这部分我们将讨论用于wx.Frame的样式。它们中的一些也适用于别的wxPython窗口部件。一些窗口部件也定义了一个SetStyle()方法,让你可以在该窗口部件创建后改变它的样式。所有的你能使用的样式元素都有一个常量标识符(如wx.MINIMIZE_BOX)。要使用多个样式,你可以使用或运算符|。例如,wx.DEFAULT_FRAME_STYLE样式就被定义为如下几个基本样式的组合:
wx.MAXIMIZE_BOX | wx.MINIMIZE_BOX | wx.RESIZE_BORDER |wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX
要从一个合成的样式中去掉个别的样式,你可以使用^操作符。例如要创建一个默认样式的窗口,但要求用户不能缩放和改变窗口的尺寸,你可以这样做:
wx.DEFAULT_FRAME_STYLE ^ (wx.RESIZE_BORDER | wx.MINIMIZE_BOX | wx.MAXIMIZE_BOX)
如果你不慎使用了&操作符,那么将得到一个没有样式的、无边框图的、不能移动、不能改变尺寸和不能关闭的界面。
wx.Frame的最重要的样式:
- wx.CAPTION:在框架上增加一个标题栏,它显示该框架的标题属性。
- wx.CLOSE_BOX:指示系统在框架的标题栏上显示一个关闭框,使用系统默认的位置和样式。
- wx.DEFAULT_FRAME_STYLE:默认样式。
- wx.FRAME_SHAPED:用这个样式创建的框架可以使用SetShape()方法去创建一个非矩形的窗口。
- wx.FRAME_TOOL_WINDOW:通过给框架一个比正常更小的标题栏,使框架看起来像一个工具框窗口。在Windows下,使用这个样式创建的框架不会出现在显示所有打开窗口的任务栏上。
- wx.MAXIMIZE_BOX:指示系统在框架的标题栏上显示一个最大化框,使用系统默认的位置和样式。
- wx.MINIMIZE_BOX:指示系统在框架的标题栏上显示一个最小化框,使用系统默认的位置和样式。
- wx.RESIZE_BORDER:给框架增加一个可以改变尺寸的边框。
- wx.SIMPLE_BORDER:没有装饰的边框。不能工作在所有平台上。
- wx.SYSTEM_MENU:增加系统菜单(带有关闭、移动、改变尺寸等功能)和关闭框到这个窗口。在系统菜单中的改变尺寸和关闭功能的有效性依赖于wx.MAXIMIZE_BOX, wx.MINIMIZE_BOX和wx.CLOSE_BOX样式是否被应用。
使用样式
这些样式的使用非常简单,在大多数的控件的属性中都有一个属性叫做style,而前面这些常量名就可以作为这个属性的属性值传入进去,从而使这个控件具有这个常量所对应的样式。比如说我们想要创建一个不允许最大化的窗口,就可以将样式修改成像这样:
wx.Frame.init(self, None, -1, "My Frame Window", (100, 100), (800, 600), style=wx.CAPTION | wx.MINIMIZE_BOX | wx.CLOSE_BOX)
这样创建出来的窗口最大化功能就是被禁用的,同理,如果想要这个窗口禁止最小化,首先要添加标题栏,然后添加关闭按钮样式和最大化按钮样式,但是不要添加最小化按钮样式,就可以禁止窗口最小化。
其中默认样式是最全面的,一般如果要做修改的话,只需要在默认样式里面进行移除样式就可以了。比如同样要实现禁止最大化的效果,可以这样来写:
wx.Frame.init(self, None, -1, "My Frame Window", (100, 100), (800, 600), style = wx.DEFAULT_FRAME_STYLE ^ wx.MAXIMIZE_BOX)