zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    JavaScript cookie详解
    Javascript数组的排序:sort()方法和reverse()方法
    javascript中write( ) 和 writeln( )的区别
    div做表格
    JS 盒模型 scrollLeft, scrollWidth, clientWidth, offsetWidth 详解
    Job for phpfpm.service failed because the control process exited with error code. See "systemctl status phpfpm.service" and "journalctl xe" for details.
    orm查询存在价格为空问题
    利用救援模式破解系统密码
    SSH服务拒绝了密码
    C# 调用 C++ DLL 中的委托,引发“对XXX::Invoke类型的已垃圾回收委托进行了回调”错误的解决办法
  • 原文地址:https://www.cnblogs.com/u0mo5/p/3973768.html
Copyright © 2011-2022 走看看