Window styles
说道窗口就必须说说窗口的风格。如果你以前用过delphi,vb开发,那么一定记得每个窗口都可以设置,诸如是否有关闭按钮、是否可以最大化、最小化等等。那么WxPython中是怎么设置的呢?答案是Window Styles
在我们前面讲述wxFrame的构造函数时有一个style参数。对了,就是设置这个,下面的表格列出了所有窗口的风格。
参数 | 解释 |
wxDEFAULT_FRAME_STYLE | 这是每个窗口的缺省风格,包含标题、可调节大小的边框,最大最小化按钮、关闭按钮和系统菜单。 |
wxICONIZE | 最小化时显示图标(只适用于Windows平台) |
wxICONIZE | 设置窗口标题 |
wxMINIMIZE | 与wxICONIZE相同 |
wxMINIMIZE_BOX | 最小化按钮 |
wxMAXIMIZE_BOX | 最大化按钮 |
wxCLOSE_BOX | 关闭按钮 |
wxSTAY_ON_TOP | 置顶窗口 |
wxSYSTEM_MENU | 是否显示系统菜单 |
wxRESIZE_BORDER | 是否科研调整窗口大小 |
wxFRAME_TOOL_WINDOW | 窗口最小化时,是否在Windows(GTK+)工具栏中显示。 |
wxFRAME_FLOAT_ON_PARENT | 窗口是否显示在最上层,与wxSTAY_ON_TOP不同,它必须有一个父窗口。 |
wxFRAME_EX_CONTEXTHELP | 是否有联机帮助按钮。 |
wxFRAME_EX_METAL | 如果时在MacOS中,这个属性用于是否显示“金属风格” |
|
|
下面这段代码演示了窗口风格的使用
窗口风格代码示例 |
import wx class StyleFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self,None,-1,"This is a style fram",size=(400,300),style=wx.SYSTEM_MENU|wx.MINIMIZE_BOX|wx.CLOSE_BOX|wx.CAPTION)
if __name__=="__main__": app=wx.PySimpleApp() frame=StyleFrame() frame.Show(True) app.MainLoop(); |
窗口的成员函数
前面的章节我们讲了窗口的各种属性,目前看来一进足够了。下面我们来看看窗口有哪些成员函数。前面已经讲过了一个构造函数,下面看看还有哪些构造函数。
void Centre(int direction = wxBOTH)
这个函数用于定义窗口居中,其中direction参数有三个选项wxHORIZONTAL, wxVERTICAL 或者 wxBOTH。顾名思义,第一个时水平居中,第二个时垂直居中,最后一个是水平和垂直居中。
bool Create(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame")
这个函数用于动态创建窗口,其中的参数和构造函数相同,这里就不讲了。
virtual wxStatusBar* CreateStatusBar(int number = 1, long style = 0, wxWindowID id = -1, const wxString& name = "statusBar")
前面我们说过,一般的窗口都会有一个状态条,尤其是主窗口,中国方法就是用于创建状态条的,这里先不细讲,在后面专门讲解状态条的部分将详细描述。
virtual wxToolBar* CreateToolBar(long style = wxNO_BORDER | wxTB_HORIZONTAL, wxWindowID id = -1, const wxString& name = "toolBar")
每个窗口尤其是主窗口一般都会有一个工具栏,上面放一些快捷按钮等,这个方法用于创建工具条。
wxMenuBar* GetMenuBar() const
获得菜单对象的方法。
wxStatusBar* GetStatusBar() const
获得状态条对象。
wxToolBar* GetToolBar() const
获得工具栏对象的方法。
void ProcessCommand(int id)
模拟菜单命令的方法,其中的id参数为Menu对象的ID属性。
void SetMenuBar(wxMenuBar* menuBar)
创建菜单对象的方法,其参数为wxMenuBar对象。
void SetStatusBar(wxStatusBar* statusBar)
设置状态条对象,其参数为wxStatusBar对象。
virtual void SetStatusText(const wxString& text, int number = 0)
设置状态条的文字。
virtual void SetStatusWidths(int n, int *widths)
设置状态条文字的宽度。
void SetToolBar(wxToolBar* toolBar)
设置工具栏对象,其参数为wxToolBar对象。
示例代码:
包含工具栏、菜单和状态条的窗口 |
import wx ID_New =wx.NewId() class StyleFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self,None,-1,"This is a style fram",size=(400,300),style=wx.SYSTEM_MENU|wx.MINIMIZE_BOX|wx.CLOSE_BOX|wx.CAPTION) menu=wx.Menu() menu.Append(ID_New,"&New") menubar=wx.MenuBar() menubar.Append(menu,"&File") self.SetMenuBar(menubar) self.CreateStatusBar(); tb = self.CreateToolBar( wx.TB_HORIZONTAL | wx.NO_BORDER | wx.TB_FLAT | wx.TB_TEXT ) tsize = (16,16) new_bmp = wx.ArtProvider.GetBitmap(wx.ART_NEW, wx.ART_TOOLBAR, tsize) tb.AddSimpleTool(10, new_bmp, "New", "Long help for 'New'")
if __name__=="__main__": app=wx.PySimpleApp() frame=StyleFrame() frame.Show(True) frame.Center() app.MainLoop(); |
好了。今天就讲到这里。基本上所有有关窗口的属性和方法都介绍完了,当然还有MDI窗口不过没什么大的区别,在以后的例子中我将逐步对其进行介绍。