1

这篇文章是对wxPython官网第二个"Hello World"的demo代码的逐行解释,不过为方便初学者做了小部分改动,勉强算对wxPython的入门了解。

一、环境与工具

  • 本机:Windows10 64位
  • Python 3.5.2
  • wxPython 4.0.0b2
  • IDE:Pycharm Professional 2017.2.3

二、代码解释

# !/usr/bin/env python
# _*_ coding:utf-8 _*_

import wx
'''
frame(窗口):带标题和边框的最顶层窗体
panel(面板):容器类,提供空间放其他组件,包括其他panel
'''

class HelloFrame(wx.Frame):
    def __init__(self, *args, **kw):
        super(HelloFrame, self).__init__(*args, **kw)

        # 创建一个Panel实例
        pn1 = wx.Panel(self)
        
        # 在pn1上创建一个静态文本组件(StaticText)
        # +label表示要显示的文本内容
        # +pos表示文本显示位置
        st = wx.StaticText(pn1, label="A simple wxPython demo!", pos=(25, 25))
        
        # 设置文本内容字号并粗体显示
        font = st.GetFont()
        font.PointSize += 10
        font = font.Bold()
        st.SetFont(font)
        
        # 创建菜单栏
        self.makeMenuBar()
        # 创建状态栏
        self.CreateStatusBar()
        # 设置状态栏要显示的文本内容
        self.SetStatusText("Ready to update to Hello World v3.0!")

    def makeMenuBar(self):
        # 创建菜单对象fileMenu(菜单栏主选项1)
        fileMenu = wx.Menu()
        
        # 在fileMenu中添加子项createItem
        # +item表示子项
        # +helpString表示对子项的说明,当鼠标移动到子项上时,会在状态栏显示
        # \t...语法允许用户键盘操作触发子项
        createItem = fileMenu.Append(wx.ID_ANY, item=u"新建文件(N)...\tCtrl-H", helpString="创建一个新的文件")
        
        # 在各子项中添加起分隔作用的横线
        fileMenu.AppendSeparator()
        
        # 在fileMenu中添加子项exitItem
        exitItem = fileMenu.Append(wx.ID_EXIT, item=u"退出")

        # 创建菜单对象helpMenu(菜单栏主选项2)
        helpMenu = wx.Menu()
        # 在fileMenu中添加子项aboutItem
        aboutItem = helpMenu.Append(wx.ID_ABOUT, item=u"关于")

        # 创建菜单栏
        menuBar = wx.MenuBar()
        # 添加各个菜单栏主选项到菜单栏中
        # "&"后的首字母+"alt"键触发菜单选项。该首字母会以下划线着重显示,按住alt键即能看见。
        menuBar.Append(fileMenu, u"文件(&F)")
        menuBar.Append(helpMenu, u"帮助(&H)")
        # 添加菜单栏到窗口
        self.SetMenuBar(menuBar)

        # 将主菜单的所有子项绑定动作
        self.Bind(wx.EVT_MENU, self.OnCreate, source=createItem)
        self.Bind(wx.EVT_MENU, self.OnAbout, source=aboutItem)
        self.Bind(wx.EVT_MENU, self.OnExit, source=exitItem)

    def OnExit(self, event):
        # 关闭窗口
        self.Close(True)

    def OnCreate(self, event):
        wx.MessageBox(u"创建文件成功")

    def OnAbout(self, event):
        # MessageBox(message, caption=MessageBoxCaptionStr, style=OK|CENTRE, parent=None, x=DefaultCoord, y=DefaultCoord)
        # +调用message()方法将会弹出一个对话窗口
        # +message表示对话窗口显示的正文信息
        # +caption表示对话窗口的标题
        # +style表示对话窗口的按钮和图标样式
        wx.MessageBox("Hello World v2.0\r\nproducted by wxPython.",
                      "About",
                      wx.OK | wx.ICON_INFORMATION)


if __name__ == "__main__":
    app = wx.App()
    frame = HelloFrame(None, title="Hello World v2.0")
    frame.Show()
    app.MainLoop()

当麻的小红箱
71 声望11 粉丝

spec!