Style Guide for wxPython code

2024 电商订单明细数据集(24列,382287条记录)CSV 详情介绍:该数据集为 2024 年电商订单明细,可以关联电商用户画像数据集(16列, 98673条记录)CSV,覆盖食品生鲜 / 3C 电子 / 美妆护肤 / 家居日用 / 服装鞋帽 5 大类、15 个品牌,平均客单价 1717 元、支付宝 + 微信支付占 75%、88% 订单无促销、取消率 5%,适合做 RFM 用户分层、购物篮关联分析、销售预测和促销效果评估。 立即下载

More

http://wiki.wxpython.org/

 

This is a little style guide for using wxPython. It's not the be-all and end-all of how wxPython code should be written, but what I've tried tocapture is a way to write wxPython code that is clear and Pythonic. It was vetted on the wxPython-users mailing list, with very littledisagreement.

Pythonic is partly defined by:

http://www.python.org/doc/Humor.html#zen

This is about how to use wxPython-specific classes and structure. For code formatting advice, particularly if you want to include it in the wxPython lib, see: http://wxpython.org/codeguidelines.php

1. Use import wx NEVER use from wx import * or the ancient from wxPython.wx import *.

  • Don't use import * for other libs either. 

    BECAUSE: Namespaces are one honking great idea. 

    For modules that are buried deep in a package, you can use:

    from wx.lib.SomeLib import SomeModule 
    As no one wants to type:

    AnObject = wx.lib.SomeLib.SomeModule.SomeClass()

2. Keyword arguments in constructors.

  • If you find yourself putting in a bunch of unneeded defaults

    like wx.DefaultSize, wx.DefaultPosition, wx.ID_ANY, etc. in constructors, use keyword arguments:

    MainFrame = wx.Frame(None, title="A Title", size=(500, 400)) 

    BECAUSE: Explicit is better than implicit.

2b. Use *args and **kwargs when subclassing wx.Windows:

 

 

 

  • This allows your custom Window to take all the same arguments as a standard Window, without your having to anticipate which ones might be useful in advance.

3. Don't use IDs. There is very rarely a good reason to use them.

  • BECAUSE: Simple is better than complex.
  • Most Widget constructors will fill in a default ID for you, so you don't have to specify one at all. Other arguments can be specified as key word arguments (see above):

    MyFrame = wx.Frame(None, title="A Title", size=(400,400))

    AButton = wx.Button(self, label="Push Me")

  • If the id is a required argument, use wx.ID_ANY. Because wx.ID_ANY == -1, you may see -1 used for an id in code, but use wx.ID_ANY to make your code clearer. And who knows, maybe that magic value will change one day. wx.ID_ANY is more explicit, as it is self-documenting and descriptive. Using the numeric value of named constants in general is extremely poor practice in any programming language. (Chris Mellon)



    BECAUSE: Explicit is better than implicit. 

    EXCEPTION: (there's always an exception!) Use standard IDs for standard menus, buttons, etc. It is useful to use the standard IDsbecause they may turn on standard functionality, such as menu item remapping for wxMac, automatic Dialog completion or cancellation,using stock button labels and images, etc. A list of these standard IDs can be found in the "Constants -- Stock items" section of the wxWidgets Reference manual. Example:

    item = FileMenu.Append(wx.ID_EXIT, "&Quit") This will put the Quit menu where it should be on OS-X, for instance.

4. Use the Bind() method to bind events:

  • A pushbutton example:

    AButton = wx.Button(self, label="Push Me")

    AButton.Bind(wx.EVT_BUTTON, self.OnButtonPush)

  • You can use Bind() for menus too, even though they don't have a Bind() method, in this way:

    FileMenu = wx.Menu()

    item = FileMenu.append(wx.ID_ANY, "&Quit")

    self.Bind(wx.EVT_MENU, self.OnQuit, item)

    (where self is a wx.Frame)

5. Use Sizers!

  • If you use Sizers rather than absolute positioning, you get code that:
  • Works better across platforms: different platforms have different size widgets.
  • Easily adapts to different languages: different languages have different length labels, etc.
  • Works better even on one platform is the user uses a different default font, different theme.
  • Is more maintainable: If you need to change, remove or add a widget, the rest of your dialog or panel can re-arrange itself.

6. wx.App() now has the same built in functionality as wx.PySimpleApp(),

  • so there is no need for the latter.

    Note: The above is not true on MacOS X. When using wx.App, tracebacks are shown in a dialog which instantly disappears as your app dies (unless run with pythonw -i). With wx.PySimpleApp, tracebacks go to stdout.

7. Use separate, custom classes rather than nesting lots of wx.Panels in one class.

  • If you find yourself doing this in an __init__:

    self.MainPanel = wx.Panel(self, ...

    self.SubPanel1 = wx.Panel(self.MainPanel, ..)

    self.SubPanel2 = wx.Panel(self.SubPanel1, ...)

    MyButton = wx.Button(self.SubPanel2, ....) 

    Then you are creating an ugly, hard to maintain, mess! 
    Instead, create custom classes for the stuff that all is working together in a panel:

    class MainPanel(wx.Panel):

    • ...

    class SubPanel1(wx.Panel):

    • ...
    etc. You'll also find that by doing this, you're less likely to break the "Don't Repeat Yourself" (DRY) principle. Often you'll find that youhave group of widgets that are common to various parts of your app. If you put them on a custom panel, you'll be able to re-use thatcode. Try to make each of these widgets autonomous, so they can be plugged in elsewhere in your app, or even another application. If your widget has to communicate with other controls define your own custom events and use them to communicate with other controls. Almost as a unit test it is nice to write a little demo app, which only uses that widget and demonstrates all its functionality.

8. Use native Python stuff rather than wx stuff where possible:

  • BECAUSE: Simple is better than complex.

    For example, use size=(500, 400) rather than size=wx.Size(500, 400)

9. Use docstrings, consistently.

 

Example

 

 

 

 

 

Comments

 

Put your comments here.

Please also feel free to add to this page, though if you want to change something, please discuss on the wxPython-users group first (unless you're RobinDunn).

Franz Steinhaeusler, 16. Jan. 2006:

  • Added docstrings for init methods.

 

History

 

First Written 1/11/2006 by Chris Barker, with a lot of help from the wxPython-users mailing list.

 

58-基于51单片机的多自由度机械手控制系统设计(设计+说明+原理++全套资料).rar 项目58-基于51单片机的多自由度机械手控制系统设计 资料包括Proteus仿真+Keil程序+Altium Designer原理图+软件安装包+参考设计说明书+答辩PPT+设计流程图,保证资料完整性! 功能: (1)本系统以STC89C52单片机为核心控制器,统筹各关节运动数据运算,保障多自由度机械手动作精准稳定运行。 (2)采用电位器角度传感模块采集关节位置信号,实时反馈各机械臂关节当前转角,为动作闭环控制提供数据支撑。 (3)使用LCD1602液晶屏实时显示各关节角度与运行模式,界面清晰直观,同步展示机械手当前工作状态。 (4)配备SG90舵机阵列作为核心执行装置,精准驱动多自由度关节转动,完成抓取、搬运等预设操作动作。 (5)内置独立按键支持自定义动作路径与点位存储,参数掉电不丢失,适配不同场景下的机械手调试需求。 立即下载

相关推荐

Picture of ssh key

Picture of ssh key

产业园区运营负责人如何实现科技资源的高效配置与联动?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

政府科技管理者在推动区域科技成果转化过程中,如何系统性地识别和分析创新资源的配置瓶颈?.docx

政府科技管理者在推动区域科技成果转化过程中,如何系统性地识别和分析创新资源的配置瓶颈?

ddrc111111111111111111

ddrc1111111111111111111

政府科技管理者如何提升区域科技成果转化项目的评价与筛选效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

高校技术转移办公室人员在成果转化过程中如何快速提升技术推介效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

三电平维也纳VIENNA双闭环控制整流器仿真(Simulink仿真实现)

内容概要:本文档系统介绍了三电平维也纳(VIENNA)整流器的Simulink仿真资源,重点实现电压外环与电流内环构成的双闭环控制策略,并融合中点电位平衡的SVPWM调制技术,以提升系统稳定性与输出电能质量。该仿真模型面向高功率因数、低谐波畸变的应用需求,详细展示了整流器的数学建模、控制算法设计、PI控制器参数整定、坐标变换(abc/dq)实现及调制策略选择等关键技术环节,涵盖从理论分析到仿真验证的完整流程,适用于电力电子高端应用的科研与工程实践。; 适合人群:电力电子、电气工程及其自动化等相关专业的本科生、研究生,以及从事新能源发电、工业电源、电动汽车、轨道交通等领域研发工作的工程师和技术人员。; 使用场景及目标:①深入理解三电平VIENNA整流器的工作机理与拓扑优势;②掌握双闭环控制系统的设计方法与动态响应优化技巧;③学习SVPWM在抑制中点电位漂移中的实现原理与工程应用;④通过Simulink平台完成控制策略建模与仿真调试,服务于课程设计、学位论文、科研项目或产品原型开发。; 阅读建议:建议结合文档提供的参考文献与配套仿真文件进行同步学习与实操,重点关注控制框图搭建、PI参数调节过程及关键信号波形(如交流侧电流、直流侧电压、中点电位波动)的观测分析,深入理解各控制模块对系统稳态精度与动态性能的影响机制。

两相交错并联Boost电路仿真模型(Simulink仿真实现)

内容概要:本文档系统性地介绍了基于Simulink平台的两相交错并联Boost电路仿真模型,属于电力电子变换器建模与仿真研究的重要组成部分。该模型采用交错并联结构,有效提升了系统效率、降低了输出电流纹波,并具备优良的动态响应与系统稳定性。文档不仅聚焦于该特定拓扑的开环与闭环控制实现,还整合了丰富的配套资源,涵盖多种主流DC-DC变换器(如Buck、Boost、LLC、CLLC)、功率因数校正(PFC)电路、PWM整流器、双向充放电系统以及新能源应用场景(如V2G、微电网)等领域的仿真模型。资源体系强调软开关技术、多相交错控制、系统级建模与参数优化设计,所有内容均提供可运行的Simulink仿真文件,部分包含详细的设计报告、计算书及参考文献,具有较强的工程实践与科研复现价值。; 适合人群:电气工程、自动化、电力电子与电力传动等相关专业的硕士博士研究生、高校科研人员,以及从事新能源发电、电动汽车、电源系统设计等领域的工程技术人员。; 使用场景及目标:①支撑高校电力电子与电力系统方向的科研项目,用于新型拓扑结构的建模与先进控制算法的验证;②服务于本科生与研究生的毕业设计、课程设计及高水平学术论文的仿真复现;③为企业在电源产品研发、新能源系统集成等环节提供成熟的仿真方案参考,缩短研发周期,降低试错成本。; 阅读建议:建议使用者首先访问文档末尾提供的完整资源目录链接,按需下载对应仿真模型;在实践过程中,应重点关注模型的参数配置、控制策略实现细节与仿真工况设置,结合配套的说明文档深入理解其工作原理与设计思路,推荐在MATLAB/Simulink环境中动手调试与二次开发,以充分掌握电力电子系统的核心技术。

【欠驱动AUV】欠驱动自主水下航行器(AUV)的轨迹跟踪和路径跟随算法的不同分析方法进行仿真研究(Matlab代码、Simulink仿真)

内容概要:本文档围绕Plecs全桥LLC谐振变换器的仿真模型展开,详细介绍了基于Plecs或Simulink平台对该类高效DC-DC变换器进行建模与仿真的方法。内容涵盖全桥LLC谐振变换器的工作原理、典型拓扑结构、关键参数设计(如谐振频率、电压增益特性)、PFM(脉冲频率调制)控制策略的实现方式,以及仿真模型的构建、调试与验证全过程。文档还整合了相关的设计报告、参考文献和计算资料,旨在为电力电子领域的研究人员和工程师提供一套完整的从理论到仿真的技术指导,尤其适用于高效率、高功率密度电源系统的研发与教学实践。; 适合人群:从事电力电子、新能源发电系统、开关电源设计及相关领域的科研人员、高校教师、研究生及工程技术人员,需具备扎实的电路理论基础和一定的Matlab/Simulink或PLECS仿真软件操作能力。; 使用场景及目标:①用于深入学习和掌握全桥LLC谐振变换器的建模方法与动态特性分析;②支持科研项目中对软开关技术、高效率变换器拓扑的性能评估与优化设计;③辅助高校课程教学、毕业设计或科研训练中关于电力电子系统仿真实践的教学与实验环节。; 其他说明:该资源通常配套提供Matlab/Simulink或PLECS仿真文件,建议结合理论学习与实际仿真操作同步进行,通过调节谐振元件参数、观察波形响应、分析效率变化等方式深化对LLC变换器工作机理的理解,特别关注其在不同负载条件下的软开关实现与系统稳定性表现。

基于单片机的电动工程机械高压管理单元控制器设计.docx

基于单片机的电动工程机械高压管理单元控制器设计.docx

IEC 101 仿真调试台是基于 Windows 桌面工具,用于 IEC 60870-5-101(简称 IEC 101 / 101 规约)串口远动通信的仿真、调试与报文分析

IEC 101 仿真调试台是基于 Windows 桌面工具,用于 IEC 60870-5-101(简称 IEC 101 / 101 规约)串口远动通信的仿真、调试与报文分析。同一个程序内既可充当主站(控制站),也可充当从站(被控站 / RTU),并内置 FT1.2 链路层原始帧的逐字段解析。 本软件是规约仿真与调试工具,不替代 SCADA/EMS 主站系统,也不作为生产环境长期运行的前置机。现场接入真实装置前,请确认串口电气接口(RS-232/RS-485)、电平转换与接线方式正确。

LLC谐振变换器开环+闭环软启动仿真设计(Simulink仿真实现)

内容概要:本文系统介绍了基于Simulink平台的LLC谐振变换器开环与闭环软启动仿真设计,深入探讨了LLC谐振变换器的建模方法、关键参数设计及软启动控制策略,涵盖半桥、全桥等多种拓扑结构,并结合PFM变频控制、闭环反馈等技术实现系统稳定启动与高效动态响应。资源包内含完整的仿真模型、设计报告与计算书,全面支撑从理论分析到工程实践的全过程,有助于深入理解LLC谐振变换器的工作机理及其在电源系统、新能源变换等领域的应用价值; 适合人群:具备电力电子与自动控制基础知识,从事开关电源、新能源变换器设计或相关方向科研工作的工程师及研究生;熟悉Simulink仿真环境并希望提升实际建模能力的研发人员; 使用场景及目标:① 掌握LLC谐振变换器的软启动控制原理,有效抑制启动过程中的电流冲击;② 学习并对比开环与闭环控制策略的设计思路与实现方法;③ 将仿真模型应用于高频DC-DC电源、车载充电机、光伏逆变器等实际工程项目开发;④ 利用所提供资料开展教学培训、课程设计或科研验证工作; 阅读建议:建议结合仿真文件与配套文档循序渐进地操作,重点关注谐振腔参数匹配、控制环路设计及软启动时序设置,通过调整频率、负载等变量观察系统动态响应,从而深化对LLC变换器非线性特性和控制性能的理解。

科技中介服务机构如何实现技术经纪人的能力画像与绩效评估?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

双Buck电路并联VDCM下垂控制(Simulink仿真实现)

内容概要:本文档介绍了“双Buck电路并联VDCM下垂控制”的Simulink仿真实现方案,重点围绕双Buck电路在并联运行条件下的均流控制策略展开,采用虚拟阻抗下垂控制(VDCM)实现负载电流的合理分配,提升系统稳定性和动态响应性能。仿真模型涵盖主电路设计、控制环路搭建、PWM调制及保护逻辑,结合下垂控制算法实现电压调节与电流均衡的协调控制,适用于低压大电流供电系统的研究与开发。文档还提供了详细的说明材料,便于理解和复现。; 适合人群:电力电子、自动化及相关专业的高校研究生、科研人员以及从事电源系统设计的工程技术人员。; 使用场景及目标:①研究多模块并联DC-DC变换器的均流控制策略;②掌握下垂控制在并联电源系统中的应用方法;③通过Simulink平台搭建和调试实际电力电子系统,提升仿真与实验能力。; 阅读建议:建议结合Simulink模型与文档说明逐步操作,重点关注控制算法的实现细节与参数整定过程,有条件者可进一步拓展至硬件实验验证,以深化对并联下垂控制机制的理解。

deepseek-harness-0.2.2-rc.1-win-x64.zip

deepseek-harness-0.2.2-rc.1-win-x64.zip

三电平Buck直流变换器双闭环、单闭环、开环仿真【附参考文献】(Simulink仿真实现)

内容概要:本文系统介绍了三电平Buck直流变换器在Simulink环境下的开环、单闭环及双闭环控制系统的建模仿真与性能对比分析,深入探讨了不同控制策略对系统动态响应、稳态精度、抗扰能力及鲁棒性的影响。通过构建完整的仿真模型,详细阐述了各控制结构的设计思路、关键模块实现方法及PI控制器参数整定过程,并结合仿真波形对比分析了三种控制方式在启动过程、负载突变等工况下的输出电压表现,充分验证了双闭环控制在抑制电压波动、提升调节速度和负载适应性方面的显著优势。文档还提供了详尽的参数设置指南和参考文献,便于读者复现结果并开展进一步研究。; 适合人群:电气工程、自动化、电力电子与电力传动等相关专业的本科生、研究生,以及从事直流变换器设计、控制算法开发和系统仿真的科研人员与工程技术开发者。; 使用场景及目标:①掌握三电平Buck变换器的工作原理与数学建模方法;②理解电压模式控制与电流模式控制的差异与应用场景;③学习双闭环PI控制器的设计流程与参数整定技巧;④为电力电子装置的控制器设计、性能优化及科研项目提供仿真验证平台与技术参考。; 阅读建议:建议读者结合Simulink软件动手搭建仿真模型,分步实现开环、单闭环与双闭环控制系统,通过调整控制器参数并观察不同工况下的系统响应,深入理解控制策略对系统性能的影响机制,同时结合提供的参考文献强化理论基础,实现从仿真到实际应用的有效过渡。

三相电压型PWM整流器PI双闭环控制Matlab仿真

内容概要:本文围绕三相电压型PWM整流器的PI双闭环控制展开,详细介绍基于Matlab/Simulink平台的控制系统建模与仿真方法,重点实现电压外环与电流内环的双闭环PI控制器设计,以提升系统的动态响应性能、稳态精度及抗干扰能力。文档不仅涵盖PWM整流器的核心控制策略,还系统整合了多种典型电力电子变换器的仿真案例,如维也纳(Vienna)整流器、LLC谐振变换器、Buck/Boost电路、图腾柱PFC等,涉及中点电压均衡、电流过零畸变抑制、SVPWM调制、功率因数校正、电网不平衡下的功率平衡控制等关键技术。配套提供的Mathcad计算书、仿真模型与参考文献,构建了一套完整的理论分析、参数设计与仿真验证一体化的学习与研究体系; 适合人群:电气工程、自动化、电力电子与新能源等相关专业的高校本科生、研究生,以及从事电力变换系统、新能源并网、电能质量治理等领域研发工作的工程技术人员; 使用场景及目标:①作为高校课程设计、毕业设计或科研项目的重要参考资料,深入理解PWM整流器双闭环控制原理与实现方法;②掌握PI控制器设计、dq坐标系变换、锁相环(PLL)、SVPWM调制等核心技术在实际系统中的综合应用;③为工业级高效电能转换系统(如充电桩、储能变流器、光伏逆变器)的研发提供理论支撑与仿真原型基础; 阅读建议:建议结合Simulink仿真模型与Mathcad计算书同步学习,注重控制算法的手动推导与控制器参数整定过程,深入理解各模块之间的耦合关系,并参考文中多种拓扑结构与先进控制策略,拓展对现代电力电子系统设计的认知深度与创新能力。

三层交换机第一次作业.docx

三层交换机第一次作业.docx

上一篇: VC++之网络编程五 聊天编程实例
下一篇: 算法-插入式
great-sage
博客等级 码龄20年 122粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值