zoukankan      html  css  js  c++  java
  • 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()


  • 相关阅读:
    对小课堂cpp的用户体验
    面试题 02.07. 链表相交 做题小结
    Leetcode 133. 克隆图 做题小结
    Leetcode 889. 根据前序和后序遍历构造二叉树-105. 从前序与中序遍历序列构造二叉树-106. 从中序与后序遍历序列构造二叉树
    图 的矩阵表示 和邻接表表示
    二叉树 常用函数 小结
    LeetCode 100. 相同的树 做题小结
    LeetCode 897. 递增顺序查找树 做题小结
    Leetcode 814. 二叉树剪枝 做题小结
    Leetcode l872. 叶子相似的树 做题小结
  • 原文地址:https://www.cnblogs.com/hdtianfu/p/2745313.html
Copyright © 2011-2022 走看看