wxPython--学习笔记

简介: wxPython程序由两个必要的对象组成,应用对象APP和顶级窗口对象Frame 应用程序对象APP管理主事件循环MainLoop() 顶级窗口对象Frame管理数据,控制并呈现给用户 先看一段最简单的代码: import wx class App(wx.

wxPython程序由两个必要的对象组成,应用对象APP和顶级窗口对象Frame 应用程序对象APP管理主事件循环MainLoop() 顶级窗口对象Frame管理数据,控制并呈现给用户 先看一段最简单的代码:

import wx
class App(wx.App):

    def OnInit(self):
        frame = wx.Frame(parent = None, title = "Kobe")
        frame.Show()
        return True
app = App()
app.MainLoop()

上面的代码说明了开发wxPython程序必须的5个步骤: 1. 导入wxPython包 2. 子类化wxPython应用类 3. 定义应用程序的初始化方法 4. 创建一个应用程序类的实例 5. 进入这个应用程序的主事件循环(MainLoop()) OnInit()方法没有参数,返回值为BOOL,此部分可以做一些关键数据初始化的动作,如果失败,返回False,程序退出。通常会在此方法中创建一个Frame对象,并调用Frame的Show()方法。 应用程序对象开始于实例被创建时,结束于最后一个应用程序窗口被关闭,与Python脚本开始执行没有先后关系。 每个wxPython程序必须有一个application对象和至少一个frame对象。application对象必须是wx.App的一个实例或在OnInit()方法中定义的一个子类的一个实例,当程序启动时,OnInit()方法将被wx.App父类调用。 上面的代码中,定义了名为MyApp的子类,在OnInit()方法中创建frame对象。

wx.Frame(self, parent, id, title, pos, size, style, name)

其中,只有parent是必须的,其余都有默认值,返回值为空。下面是其各个参数的类型:

parent (type=Window)
id    (type=int)
pos      (type=Point)
size    (type=Size)
style  (type=long)
name   (type=String)
Returns: bool

调用Show()方法使frame可见,否则不可见。可以通过给Show一个布尔值参数来设定frame的可见性:

frame.Show(False)    # 框架不可见
frame.Show(True)     # 框架可见
frame.Hide()         # 等同于frame.Show(False)

该程序并没有定义一个__init__()方法,意味着父方法wx.App.__init()__将在对象创建时被自动调用。若自己定义__init__()方法,还需要调用其基类的__init__()方法。

class App(wx.APP):
    def __init__(self):
        wx.APP.__init__(self)

如果没有这样做, wxPython将不被初始化,并且OnInit()方法也不会调用 当程序进入主循环后,控制权将转交给wxPython。wxPython GUI程序主要响应用户的鼠标和键盘事件。当一个应用程序的所有框架被关闭后,app.MainLoop()方法将返回,程序退出。

import wx
class Frame(wx.Frame):

    def __init__(self, image, parent=None, id =-1,
                 pos = wx.DefaultPosition, 
                 title = "Hello, wxPython!"):

        temp = image.ConvertToBitmap()
        size = temp.GetWidth(), temp.GetHeight()

        wx.Frame.__init__(self, parent, id, title, pos, size)
        self.bmp = wx.StaticBitmap(parent = self, bitmap = temp)
class App(wx.App):

    def OnInit(self):
        image = wx.Image('wxPython.jpg', wx.BITMAP_TYPE_JPEG)
        self.frame = Frame(image)

        self.frame.Show()
        self.SetTopWindow(self.frame)
        return True
def main():
    app = App()
    app.MainLoop()
if __name__ == '__main__':
    main()
目录
相关文章
|
4月前
|
Python
wxPython4.0.4关于我们
wxPython4.0.4关于我们
22 0
|
Unix Linux 程序员
Py之curses:curses库的简介、使用、安装方法详细攻略
Py之curses:curses库的简介、使用、安装方法详细攻略
Py之curses:curses库的简介、使用、安装方法详细攻略
|
缓存 Ubuntu Java
Tool之Bazel:Bazel的简介、安装、使用方法之详细攻略
Tool之Bazel:Bazel的简介、安装、使用方法之详细攻略
|
5月前
|
开发框架 程序员 C++
wxPython
wxPython 是一个基于 Python 的 GUI 开发框架,它是基于 wxWidgets C++ 库的 Python 绑定。wxPython 提供了大量的控件和工具,使 Python 程序员可以快速地开发出具有良好用户界面的应用程序。
34 2
|
数据可视化 API 计算机视觉
Py之pycocotools:pycocotools库的简介、安装、使用方法之详细攻略续篇
Py之pycocotools:pycocotools库的简介、安装、使用方法之详细攻略续篇
|
数据库 Python
Python学生管理系统+MySQL+tkinter+pyinstaller(终章)
Python学生管理系统+MySQL+tkinter+pyinstaller(终章)
Python学生管理系统+MySQL+tkinter+pyinstaller(终章)
|
Python
Python 技术篇-whl包安装失败规范命名实例演示,whl is not a supported wheel on this platform问题解决办法
Python 技术篇-whl包安装失败规范命名实例演示,whl is not a supported wheel on this platform问题解决办法
376 0
|
Linux
python-devel找不到,可以试试python-dev
python-devel找不到,可以试试python-dev
145 0
|
Unix Linux API
Py之wxPython:wxPython的简介、安装、使用方法之详细攻略
Py之wxPython:wxPython的简介、安装、使用方法之详细攻略
Py之wxPython:wxPython的简介、安装、使用方法之详细攻略