wxpython in action 第一章划水【完结】

建一个基本的wxpython程序结构你必须做完5个步骤:

1 引入必须的wxpython包

2  继承wxpython应用程序类

3 定义一个应用程序初始化方法

4 创建一个应用程序类的实例

5进入应用程序的事件主循环。

第一件事情就是导入wx库  

import wx 

导入了这个wx库,你就可以指向wxpython的类,函数,常量。。。     

class App(wx.App): 

上例为建立一个App类,继承自wx.App类。 

 有一件事很重要:你必须导入wx库在你导入任何其他的wxpython库之前。

给出一个定义wx.App子类的例子

class MyApp(wx.App):   
  def OnInit(self):   
  frame = wx.Frame(parent=None, id=-1, title="Bare")   
  frame.Show()   
  return True   

wx.Frame构造方法接收数个参数。只有第一个是必须的,其余的都有默认值。

调用Show(true)方法使得窗口显示,如果参数为false,则窗口消失,但是窗口还是存在的。

frame.Show(False) # Make the frame invisible.
frame.Show(True) # True is the default parameter value. 
frame.Hide() # Equivalent to frame.Show(False).

Define an application initialization

class App(wx.App):
  def __init__(self):
  # Call the base class constructor.
    wx.App.__init__(self)
    # Do something here...
自定义了一个app类,不要忘记了调用父类的init。如果你忘记做这步,wxpython将不会初始化
并且你的OnInit方法也不会被调用。悲剧啊!

 Create an application class instance and enter its main event loop

app = App()

app.MainLoop()

就是这样,应用程序的主时间循环接手了。当所有窗体被关闭,app.MainLoop()方法将返回并且程序将退出。

Extending the bare-minimum wxPython program

这个初级的程序应该给你一个很舒服的开始,但但是有些事情太小了以至于没有任何实际用途除了让我们研究讨论。接下来扩展这个程序。

#!/usr/bin/env python
"""Spare.py is a starting point for a wxPython program."""
import wx
class Frame(wx.Frame):
    pass
class App(wx.App):
    def OnInit(self):
        self.frame = Frame(parent=None, title='Spare')
        self.frame.Show()
        self.SetTopWindow(self.frame)
        return True
if __name__ == '__main__':
    app = App()
    app.MainLoop()

在这个程序中,我改变了创建frame对象的方法:定义了一个wx.Frame类的子类。你很可能想要将他加入自己的module并且import进你的程序中。

在OnInit()方法中调用了SetTopWindow()方法,这个方法的作用是指定整个wxpyton程序的主窗体。因为你的程序有可能有很多个窗体。

 Creating the final hello.py program

 程序不全贴了,直接上不同的地方

def __init__(self, image, parent=None, id=-1,

                    pos=wx.DefaultPosition,

                    title='Hello, wxPython!'):

     """Create a Frame instance and display image."""

     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)
image = wx.Image('wxPython.jpg', wx.BITMAP_TYPE_JPEG)

self.frame = Frame(image)





我们要显示一个图像在wx.StaticBitmap控件中,就必须要一个bitmap。所以我们转换了图像到位图。同时使用size配对可以使得框架的尺寸与位图尺寸相符。

第一章理论上到此结束了。但是作者要吹一下wxpython。有兴趣慢慢看。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#####由于过长只截取了部分######### #####由于过长只截取了部分######### 欢迎来到wxPython 19 1.1 开始wxPython 20 1.2 创建最小的空的wxPython程序 20 1.2.1 导入wxPython 21 1.2.2 使用应用程序和框架工作 22 子类化wxPython application类 23 定义一个应用程序的初始化方法 23 创建一个应用程序实例并进入它的主事件循环 23 1.3 扩展这个最小的空的wxPython程序 24 1.4 创建最终的hello.py程序 26 2、给你的wxPython程序一个稳固的基础 28 2.1 关于所要求的对象我们需要知道些什么? 28 2.2 如何创建和使用一个应用程序对象? 29 2.2.1 创建一个wx.App的子类 29 何时省略wx.App的子类 30 2.2.2 理解应用程序对象的生命周期 31 2.3 如何定向wxPython程序的输出? 31 2.3.1 重定向输出 32 2.3.2 修改默认的重定向行为 34 2.4 如何关闭wxPython应用程序? 34 2.4.1 管理正常的关闭 35 2.4.2 管理紧急关闭 35 2.5 如何创建和使用顶级窗口对象? 36 2.5.1 使用wx.Frame 36 2 / 565 2.5.2 使用wxPython的ID 37 明确地选择ID号 38 使用全局性的NewID()函数 38 2.5.3 使用wx.Size和wx.Point 38 2.5.4 使用wx.Frame的样式 39 2.6 如何为一个框架增加对象和子窗口? 41 2.6.1 给框架增加窗口部件 42 2.6.2 给框架增加菜单栏、工具栏和状态栏。 44 2.7 如何使用一般的对话框? 45 消息对话框 46 文本输入对话框 47 从一个列表中选择 47 2.8 一些最常见的错误现象及解决方法? 48 2.9 总结 49 3、在事件驱动环境中工作 51 3.1 要理解事件,我们需要知道哪些术语? 51 3.2 什么是事件驱动编程? 52 3.2.1 编写事件处理器 54 3.2.2 设计事件驱动程序 55 3.2.3 事件触发 55 3.3 如何将事件绑定到处理器? 56 3.3.1 使用wx.EvtHandler的方法工作 57 3.4 wxPython是如何处理事件的? 61 3.4.1 理解事件处理过程 62 第一步,创建事件 64 第二步,确定事件对象是否被允许处理事件。 64 第三步 定位绑定器对象 65 3 / 565 第四步 决定是否继续处理 66 第五步 决定是否展开 67 3.4.2 使用Skip()方法 68 3.5 在应用程序对象中还包含哪些其它的属性? 70 3.6 如何创建自己的事件? 71 3.6.1 为一个定制的窗口部件定义一个定制的事件。 71 创建自定义事件的步骤: 71 3.7 总结 75 4、用PyCrust使得wxPython更易处理 76 4.1 如何与wxPython程序交互? 76 PyCrust配置了标准的Python shell 77 4.2 PyCrust的有用特性是什么? 79 4.2.1 自动完成 80 4.2.2 调用提示和参数默认 80 4.2.3 语法高亮 81 4.2.4 Python 帮助 81 . . . . . .
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值