主页 > GUI教程 > 正文

wxPython--学习笔记

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()

上一篇:python gui - PyQt4 精彩实例剖析之电子钟
下一篇:python gui - wxPython多线程支撑

PythonTab微信大众号:

Python技能交流合作群 ( 请勿加多个群 ):

群1: 87464755

群2: 333646237

群3: 318130924

群4: 385100854