The wxPython Guide笔记1

本文介绍wxPython的基本使用方法,包括创建应用程序、窗口以及如何处理事件。通过实例演示了如何创建一个简单的带事件处理的窗口应用程序。
1    app = wx.App()
    每个wxpyhon的程式都必须有一个application object

2    wxFrame
    (1)wx.Frame widget 是一个最重要的容器 是其他widget的parent widget
    (2)Frame有7个参数
        wx.Frame(wx.Window parent, int id=-1, string title='', wx.Point pos = wx.DefaultPosition,
            wx.Size size = wx.DefaultSize, style = wx.DEFAULT_FRAME_STYLE, string name = "frame")
    (3)第一个参数没有默认值 前三个是必须的 其他的可选
    (4)style这个参数可以是多个的集合写法如下
        window = wx.Frame(None, style=wx.MAXIMIZE_BOX | wx.RESIZE_BORDER
            | wx.SYSTEM_MENU | wx.CAPTION |     wx.CLOSE_BOX)
        默认的是wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxRESIZE_BORDER | wxSYSTEM_MENU | wxCAPTION | wxCLOSE_BOX | wxCLIP_CHILDREN.
    (5)可以使用wxWindow的方法Move等
                    Method                                                                                    Description
        Move(wx.Point point)                                                move a window to the given position
        MoveXY(int x, int y)                                                    move a window to the given position
        SetPosition(wx.Point point)                                    set the position of a window
        SetDimensions(wx.Point point, wx.Size size)    set the position and the size of a window
    (6)可以使用wxWindow和wxTopLevelWindow的一些方法来修改Frame的默认位置大小等
        比如让窗口最大化 在中间显示 调用Centere()和Maximize()方法即可
python 代码
  1. import wx  
  2.   
  3. class Centre(wx.Frame):  
  4.     def __init__(self, parent, id, title):  
  5.     wx.Frame.__init__(self, parent, id, title)  
  6.   
  7.     self.Centre()  
  8.     self.Maximize()  
  9.     self.Show(True)  
  10.   
  11. app = wx.App()  
  12. Centre(None, -1, 'Centre')  
  13. app.MainLoop() 
  14.  


3   一个带有事件处理的简单例子
   
python 代码
 
  1. #!/usr/bin/python  
  2.   
  3. # communicate.py  
  4.   
  5. import wx  
  6.   
  7. #左边的面板  继承自wxPanel  
  8. class LeftPanel(wx.Panel):  
  9.     def __init__(self, parent, id):  
  10. #初始化面板  
  11.     wx.Panel.__init__(self, parent, id, style=wx.BORDER_SUNKEN)  
  12. #左边的文本区等于右边的文本区 所以构造的时候要先构造右边的Panel  
  13. #这个地方是找到一个static text widget  
  14. #直接指到RightPanel中的wx.StaticText(self, -1, '0', (40, 60))  
  15.     self.text = parent.GetParent().rightPanel.text  
  16. #添加两个按钮 一个加号(加法操作)一个减号(减法操作)  
  17.     button1 = wx.Button(self, -1, '+', (10, 10))  
  18.     button2 = wx.Button(self, -1, '-', (10, 60))  
  19. #和自定义的事件处理绑定  
  20.     self.Bind(wx.EVT_BUTTON, self.OnPlus, id=button1.GetId())  
  21.     self.Bind(wx.EVT_BUTTON, self.OnMinus, id=button2.GetId())  
  22. #加法函数  
  23.     def OnPlus(self, event):  
  24.     value = int(self.text.GetLabel())  
  25.     value = value + 1  
  26.     self.text.SetLabel(str(value))  
  27. #减法函数  
  28.     def OnMinus(self, event):  
  29.     value = int(self.text.GetLabel())  
  30.     value = value - 1  
  31.     self.text.SetLabel(str(value))  
  32.   
  33. #右边的面板  继承自wxPanel  
  34. class RightPanel(wx.Panel):  
  35.     def __init__(self, parent, id):  
  36.     wx.Panel.__init__(self, parent, id, style=wx.BORDER_SUNKEN)  
  37. #因为LeftPanel也指到这个 所以RightPanel要先初始化  
  38.     self.text = wx.StaticText(self, -1, '0', (40, 60))  
  39.   
  40. #构造一个Frame  
  41. class Communicate(wx.Frame):  
  42.     def __init__(self, parent, id, title):  
  43. #Frame 初始化  
  44.     wx.Frame.__init__(self, parent, id, title, size=(280, 200))  
  45. #为了使得上面LeftPanel的self.text = parent.GetParent().rightPanel.text准确的找到  
  46. #让两个panel继承自同一个父panel  
  47.     panel = wx.Panel(self, -1)  
  48.     self.rightPanel = RightPanel(panel, -1)  
  49.   
  50.     leftPanel = LeftPanel(panel, -1)  
  51. #定义panel的大小和位置  
  52.     hbox = wx.BoxSizer()  
  53.     hbox.Add(leftPanel, 1, wx.EXPAND | wx.ALL, 5)  
  54.     hbox.Add(self.rightPanel, 1, wx.EXPAND | wx.ALL, 5)  
  55.   
  56.     panel.SetSizer(hbox)   
  57.     self.Centre()  
  58.     self.Show(True)  
  59. #定义wxApp并画出这个窗口  
  60. app = wx.App()  
  61. Communicate(None, -1, 'widgets communicate')  
  62. app.MainLoop()  
Delphi 12.3 作为一款面向 Windows 平台的集成开发环境,由 Embarcadero Technologies 负责其持续演进。该环境以 Object Pascal 语言为核心,并依托 Visual Component Library(VCL)框架,广泛应用于各类桌面软件、数据库系统及企业级解决方案的开发。在此生态中,Excel4Delphi 作为一个重要的社区开源项目,致力于搭建 Delphi 与 Microsoft Excel 之间的高效桥梁,使开发者能够在自研程序中直接调用 Excel 的文档处理、工作表管理、单元格操作及宏执行等功能。 该项目以库文件与组件包的形式提供,开发者将其集成至 Delphi 工程后,即可通过封装良好的接口实现对 Excel 的编程控制。具体功能涵盖创建与编辑工作簿、格式化单元格、批量导入导出数据,乃至执行内置公式与宏指令等高级操作。这一机制显著降低了在财务分析、报表自动生成、数据整理等场景中实现 Excel 功能集成的技术门槛,使开发者无需深入掌握 COM 编程或 Excel 底层 API 即可完成复杂任务。 使用 Excel4Delphi 需具备基础的 Delphi 编程知识,并对 Excel 对象模型有一定理解。实践中需注意不同 Excel 版本间的兼容性,并严格遵循项目文档进行环境配置与依赖部署。此外,操作过程中应遵循文件访问的最佳实践,例如确保目标文件未被独占锁定,并实施完整的异常处理机制,以防数据损毁或程序意外中断。 该项目的持续维护依赖于 Delphi 开发者社区的集体贡献,通过定期更新以适配新版开发环境与 Office 套件,并修复已发现的问题。对于需要深度融合 Excel 功能的 Delphi 应用而言,Excel4Delphi 提供了经过充分测试的可靠代码基础,使开发团队能更专注于业务逻辑与用户体验的优化,从而提升整体开发效率与软件质量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值