wxPython -- 入门示例

看了一点wxPython,感觉上 wx和MFC程序的结构差不多,

1. 在哪里对程序初始化?

    wx.App.OnInit(), 这个方法类似于MFC的InitInstance,

    我们在这个方法里对程序进行初始化,如创建并显示frame

    : 如果初始化成功,这个函数应该返回True,否则程序将终止

    我们一般在wx.App.OnInit()中对我们的程序进行初始化,

    如果有某些特殊原因需要重写__init__, 那么就必须调用父类的__init__方法,否则OnInit不会被调用

2. 在哪里清理我们的程序?

    重写wx.App的OnExit(),当程序的主循环结束后,会调用这个函数

    它类似于MFC中的ExitInstance 

3. 窗口中的控件应该在哪里创建?

    wx.Frame.__init__(), 我们可以在这个方法中初始化自己的控件 

4. 程序如何开始?

    创建一个wx.App子类的实例,并调用它的MainLoop()函数

    和MFC的流程也是一样的,只不过,MFC把main这个入口函数隐藏起来了。 

 

有时候,我们可能不想定义一个wx.App的子类并覆盖其OnInit方法,

那么我们可以使用wx.PySimpleApp, 这个类提供了最基本的OnInit方法。

 

在使用wxPython导入任何东西之前,都必须先导入wx

      import wx
      因为第一次导入wx时,wxPython会先对wxPython的其他模块进行初始化

下面是一个简单的例子: 

 1  # !/user/bin/env python
 2  # coding:gbk
 3  import wx
 4  #  创建一个App
 5  class App(wx.App):
 6      def  __init__(self):
 7          #  如果要重写 __init__, 必须调用wx.App的__init__,否则OnInit方法不会被调用
 8          super(self. __class__, self). __init__()
 9 
10      def OnInit(self):
11          #  通常在这个方法里 对程序进行初始化,如创建并显示frame
12          frame = MyFram()
13         frame.Show(True)
14          #  设置顶级窗口, 将此Frame设置为顶级窗口
15          self.SetTopWindow(frame)
16 
17          #  这里必须 return True, 表示正确初始化; 否则序将终止
18           return True
19 
20  class MyFram(wx.Frame):
21      def  __init__(self):
22          #  初始化父类,指定窗口基本的属性
23          super(self. __class__, self). __init__(parent = None, id = -1, title =  " My Frame ", size = (300, 300))
24          #  定义一个Panel
25          panel = wx.Panel(parent = self, id = -1)
26          #  绑定MOTION事件
27          panel.Bind(wx.EVT_MOTION, self.OnMove)
28 
29          #  创建一个label: StaticText
30          wx.StaticText(parent = panel, id = -1, label =  " Pos: ", pos = (10, 12) )
31 
32          # 创建一个文本框: TextCtrl
33          self.posCtrl = wx.TextCtrl(parent = panel, id = -1, value =  '', pos = (40, 10) )
34      def OnMove(self, event):
35         pos = event.GetPosition()
36         self.posCtrl.SetValue( ' %s, %s ' % (pos.x, pos.y) )
37 
38  if  __name__ ==  ' __main__ ':
39      #  wx程序必须有一个wx.App来开始程序
40      app = App()
41     app.MainLoop()


 

你可能感兴趣的:(wxPython)