wxpython应用程序对象与顶级窗口_wxPython--学习笔记

d21a4925a9d14403b8ccef2758c8f455.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值