`
wwweducn
  • 浏览: 29746 次
文章分类
社区版块
存档分类
最新评论

方法对象wxPython方法对象

阅读更多

时间紧张,先记一笔,后续优化与完善。

    wxPython序程由两个要必的对象成组,用应对象APP和顶级窗口对象Frame

    

  • 用应序程对象APP理管主事件循环MainLoop()
  • 顶级窗口对象Frame理管数据,制控并呈现给用户

    1344950345_6075

    先看一段最简略的码代:

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

文章结束给大家分享下程序员的一些笑话语录: Bphone之你们聊,我先走了!移动说:我在phone前加o,我叫o缝;苹果说:我在phone前i,我是i缝;微软说:我在phone前加w,我叫w缝;三星说:你们聊,我先走了!
将来王建宙写回忆录的时候,一定要有一句“常小兵为中国移动的发展做出了不可磨灭的贡献”。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics