Skip to content

wxPython--学习笔记

标签:wxPython 学习笔记

wxPython程序由两个必要的对象组成,应用对象APP和顶级窗口对象Frame 应用程序对象APP管理主事件循环MainLoop() 顶级窗口对象Frame管理数据,控制并呈现给用户 先看一段最简单的代码: 1 2 3 4 5 6 7 8 9 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对象。 1 wx.Frame(self, parent,id, title, pos, size, style, name) 其中,只有parent是必须的,其余都有默认值,返回值为空。下面是其各个参数的类型: 1 2 3 4 5 6 7 parent (type=Window) id    (type=int) pos      (type=Point) size    (type=Size) style  (type=long) name   (type=String) Returns:bool 调用Show()方法使frame可见,否则不可见。可以通过给Show一个布尔值参数来设定frame的可见性: 1 2 3 frame.Show(False)   # 框架不可见 frame.Show(True)    # 框架可见 frame.Hide()        # 等同于frame.Show(False) 该程序并没有定义一个__init__()方法,意味着父方法wx.App.__init()__将在对象创建时被自动调用。若自己定义__init__()方法,还需要调用其基类的__init__()方法。 1 2 3 class App(wx.APP):     def __init__(self):         wx.APP.__init__(self) 如果没有这样做, wxPython将不被初始化,并且OnInit()方法也不会调用 当程序进入主循环后,控制权将转交给wxPython。wxPython GUI程序主要响应用户的鼠标和键盘事件。当一个应用程序的所有框架被关闭后,app.MainLoop()方法将返回,程序退出。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 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()

部分信息收集于网络,若有侵权请联系我们.