[ZZ] wxPyhon之Frame (二)

来源:互联网 发布:发那科法机器人编程 编辑:程序博客网 时间:2024/05/20 07:53

 

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

窗口最小化时,是否在WindowsGTK+)工具栏中显示。

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窗口不过没什么大的区别,在以后的例子中我将逐步对其进行介绍。

原创粉丝点击