`
limodou
  • 浏览: 66726 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

[ANN]meide项目-wxPython界面生成库

阅读更多
这是我新建的一个项目,主页在 http://code.google.com/p/meide<wbr></wbr>/

背景:

使用wxPython开发GUI时经常要生成界面,
一种是通过工具生成(但我认为这种重用性并不好)<wbr></wbr>,另一种就是手工写代码。我主要是手工写代码,但是需要你有耐心<wbr></wbr>。以前创建过叫
EasyGuider 的项目,它可以通过字典形式的数据结构快速生成界面<wbr></wbr>,不过存在一些问题:格式固定,不支持事件。于是我从快速辅助手<wbr></wbr>写代码的需求上创建了这个新项目。它适合用来生成简单<wbr></wbr>,有规律的界面。从我个人的开发体会(UliPad)<wbr></wbr>,大量的界面工作并不是很复杂,但是生成组件,布局比较麻烦<wbr></wbr>,因此就想从这里入手,考虑如何快速开发界面。

目标:

方便定义界面
支持事件
支持validate(考虑中)

因此这个项目是从代码级的复用和简化方面来考虑的<wbr></wbr>。目前已经有一些基础代码,有兴趣的可以看一看。不过需要实现的<wbr></wbr>功能还很多。大家有什么好的想法可以交流。

整个框架的设计分为几个层次:

元素
布局
窗体(还未实现)
辅助工具

常见的控件将有对应的类实现。布局目前已经支持HBox, VBox, HGroup, VGroup, Grid, SimpleGrid。布局对象之间可以嵌套。

举一个简单的例子说明使用(可以看tests/test<wbr></wbr>_hbox.py)

import wx
import sys

sys.path.insert(0, '..')

class wxApp(wx.App):
   def OnInit(self):
       return True

class Frame(wx.Frame):
   def __init__(self):
       super(Frame, self).__init__(None, -1)
       self.init()

   def init(self):
       import meide
       self.box = box = meide.VBox(padding=4)
       box.add('', meide.Label('Hello'))
       box.add('text', meide.Text('Hello', size=(100, -1)))
       meide.create(self, box)

if __name__ == '__main__':
   wxApp = wxApp(0)
   frame = Frame()
   frame.Show()
   wxApp.SetTopWindow(frame)
   wxApp.MainLoop()

这是一个VBox的示例。VBox在创建时可以设置一个padd<wbr></wbr>ing的参数,它表示这个VBox与周围的空白间距为4个像素。

box.add('', meide.Label('Hello'))
这行是加了一个标签。第一个参数是名字,如果不需要可以为''<wbr></wbr>。不过meide会自动生成一个id_开头的名字,不过一般不用<wbr></wbr>。Label将会使用wx.StaticText控件来生成。也就是说每一个meide的控件将对应一个实际或组合的wxP<wbr></wbr>ython控件。Label至少需要一个字符串参数<wbr></wbr>。其实meide在处理控件时比较特殊,它是按照wxPytho<wbr></wbr>n相应控件的构造参数来组织的,你其实可以根据相应的实际控件填<wbr></wbr>入其它的参数。

box.add('text', meide.Text('Hello', size=(100, -1)))
这行是加入一个文本输入字符,对应于单选输入。第一个参数为它的<wbr></wbr>名字。从这个例子你可以看到它多了一个size的参数<wbr></wbr>。100表示宽度,-1表示不关心。那么meide在处理每个控<wbr></wbr>件时会有一个缺省的缩放因子,对于Text它就是(-1,
0)(从meide.py中可以找到,它是一个类属性叫proportion)。当出现size时<wbr></wbr>,这个缩放因子会与size进行比较,如果缩放因子的x<wbr></wbr>,y的值为-1表示可以缩放,同时相应的size的值也为<wbr></wbr>-1的话,就在相应的方向上进行缩放。如果没有size参数<wbr></wbr>,则按照缩放因子来进行设置。所以很有趣。缩放因子用来控制在哪<wbr></wbr>个方向上可以缩放,而size的定义可以取消某个方面的缩放。

在添加完元素之后,执行:meide.create(self, box),这样元素就画出来了,同时box对应的sizer自动<wbr></wbr>与窗体相关联。

以上只是一个简单的示例,还有许多功能在开发中。

同时要指出,目前meide并不是一个完整的界面解决工具<wbr></wbr>,它侧重于代码的局部。如果你想使用更抽象的mvc的方式<wbr></wbr>,建议研究一下enthought的traits。
分享到:
评论

相关推荐

    eclipse开发j2me环境配置

    - 解压到指定目录,例如:`F:\j2meIDE\eclipse`。 - 同样下载NLpack插件包`NLpack-eclipse-SDK-3.0.x-win32.zip`,解压并将其中的`features`和`plugins`两个文件夹的内容直接复制到Eclipse的相应目录下。 2. **...

    Python内容文档与基础学习

    学习python文档;与基础学习java学习更为先进的解释性编程语言;

    SAP ABAP总结大全

    SAP ABAP是一种高级业务应用编程接口,是SAP R/3系统中主要的编程语言。以下是对SAP ABAP的一些关键知识点的详细说明: 1. **事件流**:在ABAP程序中,事件流控制着程序的不同阶段,包括初始化(INITIALIZATION)、...

    基于STM32的弦波无刷电机控制资料:源码及带Video教程.pdf

    基于STM32的弦波无刷电机控制资料:源码及带Video教程.pdf

    机器学习(预测模型):关于银枫树生长的研究数据

    这个数据集是关于银枫树生长的研究数据,主要探讨了生长调节剂对银枫树顶芽萌蘖长度、单个节间长度以及芽数的影响。根据数据集的名称可以推测,它可能包含与树木生长相关的数据,例如树木的种类、年龄、高度、直径、生长速度、土壤类型、气候条件等信息。这些数据可能来源于对不同地区、不同种类树木的长期观测和记录,旨在研究树木生长的规律、影响因素以及与环境之间的相互关系。该数据集可能对生态学家、林业工作者、环境科学家等研究人员具有重要价值。例如,生态学家可以利用这些数据来研究树木在不同生态系统中的生长模式和生态位;林业工作者可以分析树木的生长速度和质量,为森林资源的管理和可持续利用提供依据;环境科学家则可以探究气候变化、土壤污染等因素对树木生长的影响,从而更好地制定环境保护策略。此外,该数据集也可能在教育领域发挥作用,为学生提供实际的生态数据,帮助他们更好地理解生态学和环境科学的概念和原理。

    S7-200-PC-Access-SMART-V2.3

    ‌S7-200 PC Access SMART V2.3‌是西门子公司推出的一款针对S7-200 SMART PLC与上位机通信的OPC(OLE for Process Control)服务器软件。其主要作用是与其他标准的OPC客户端进行通信,并提供数据信息。S7-200 PC Access SMART V2.3与S7-200 PLC的OPC服务器软件PC Access类似,也具有OPC客户端测试功能

    服务器运维之统信服务器操作系统 V20(1060)安装指南详解

    内容概要:文档提供了统信服务器操作系统 V20(1060)详尽的安装指导。涵盖前期准备工作、多种安装方式(如光盘、USB盘、PXE、镜像引导)、系统配置过程中的重要设置(如网络、时间、分区、授权管理等)、FAQ等常见疑问解决方案。该指南有助于用户顺利完成系统部署和初步配置。文中对不同架构(包括 AMD64, ARM64, LoongArch)的支持情况做了特别介绍,并针对鲲鹏服务器进行了特定提示和参数调整。 适合人群:具备Linux基础知识的专业IT技术人员,尤其是在服务器安装和管理系统方面的工作者。 使用场景及目标:为那些计划部署或升级到统信服务器操作系统的数据中心提供全面的安装指导,确保系统能够稳定高效地投入使用。此外也为遇到安装难题的技术员提供排障方法。 其他说明:除了图文并茂的教学流程,文中还涉及了诸如BIOS设置、安装过程中可能出现的问题及其解决方案等多个方面。特别强调了安全性配置和支持多语言特性等内容。

    阿里巴巴的销售管理分析(50页).ppt

    阿里巴巴的销售管理分析(50页)

    基于SVPWM的直接转矩控制:Matlab_Simulink仿真模型(成品)——包含PI控制的转速环、转矩环和磁链环,以及空间矢量SVPWM调制与转矩脉动优化.pdf

    基于SVPWM的直接转矩控制:Matlab_Simulink仿真模型(成品)——包含PI控制的转速环、转矩环和磁链环,以及空间矢量SVPWM调制与转矩脉动优化.pdf

    chromedriver-mac-x64-135.0.7049.28.zip

    chromedriver-mac-x64-135.0.7049.28.zip

    是一个专为Windows用户设计的免费Android应用反编译和打包工具 这款工具集成了多种实用功能,包括解包、搜索、重新打包、签名以及批量打包,使得Android应用的逆向工程过程变得更加简便

    是一个专为Windows用户设计的免费Android应用反编译和打包工具 这款工具集成了多种实用功能,包括解包、搜索、重新打包、签名以及批量打包,使得Android应用的逆向工程过程变得更加简便

    门户元素-消息通知.zip

    门户元素-消息通知.zip

    基于SpringBoot的福泰轴承进销存系统(源码+数据库+万字文档)

    一、项目介绍 403.系统包含三种角色:管理员、仓库人员、销售人员,主要功能如下。 管理员: 1. 个人中心:管理个人信息,包括修改密码、查看个人资料等。 2. 管理员管理:对其他管理员进行添加、编辑、删除等操作。 3. 基础数据管理:管理系统的基础数据,包括商品分类、供应商信息、客户信息等。 4. 公告管理:发布公司内部公告通知。 5. 供应商信息管理:管理供应商的信息,包括添加、编辑、删除供应商等操作。 6. 客户管理:管理客户信息,包括添加、编辑、删除客户等操作。 7. 商品管理:管理商品信息,包括添加、编辑、删除商品信息等操作。 8. 商品出入库管理:管理商品的出入库记录,包括入库、出库、调拨等操作。 9. 商品销售管理:管理商品的销售记录,包括销售订单管理、销售统计等。 10. 商品退货管理:处理客户退货请求,包括审核、退款等操作。 11. 销售人员管理:对销售人员进行添加、编辑、删除等操作。 12. 仓库人员管理:对仓库人员进行添加、编辑、删除等操作。

    chromedriver-win64-134.0.6998.90.zip

    chromedriver-win64-134.0.6998.90.zip

    VLAN划分在网络管理中的应用:基于Cisco 2960交换机的广播域隔离实践

    内容概要:本文主要介绍了VLAN的概念及其重要性,尤其是如何将大量设备划分为多个广播域,从而有效防止局部网络攻击对整个网络的影响。文中具体讲述了利用Cisco 2960系列交换机来进行VLAN划分的方法步骤,并附带了一个简单实验案例。实验内容展示了如何通过配置命令设置不同部门所用的机器归属于特定VLAN,同时测试跨VLAN间主机间的不可达状态,以验证分区的有效性。 适合人群:对于有一定基础但想要深入理解企业级网络管理和安全性措施的学习者、网络管理员和技术爱好者。 使用场景及目标:适用于任何规模的企业内部网络架构设计与优化过程中,尤其是在面对复杂的网络安全环境时,能够更好地规划和控制网络流量。 其他说明:文章侧重于理论结合实际操作,详细解释每个步骤背后的原理,确保读者可以动手搭建并测试自己的小型网络实验环境。此外,还提及到了关于ARP攻击的具体防范措施之一——限制传播范围。这有助于提高用户对企业信息化安全的认知水平,增强应对潜在风险的能力。

    DBeaver MongoDB驱动包

    DBeaver MongoDB驱动包

    uwsgi-alarm-curl-2.0.27-4.el8.x64-86.rpm.tar.gz

    1、文件说明: Centos8操作系统uwsgi-alarm-curl-2.0.27-4.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf uwsgi-alarm-curl-2.0.27-4.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm

    基于SpringBoot的海滨体育馆管理系统(源码+数据库+万字文档)

    427海滨体育馆管理系统,系统包含两种角色:用户、管理员,系统分为前台和后台两大模块,主要功能如下: 登录模块的实现 管理员和学生在登录界面输入用户名、密码,并选择用户类型进行登录操作。 注册模块的实现 没有账号的学生用户可进行注册操作。 学生管理模块的实现 管理员可以添加、修改和删除学生信息。 系统主界面模块的实现 学生可以进入系统前台查看系统信息,包括首页、器材信息以及体育论坛等。 器材管理模块的实现 管理员可以添加、修改和删除器材信息,学生可查看器材信息。 器材借出管理模块的实现 学生可以添加器材借出信息,管理员可以查看和管理所有器材借出信息,并可进行修改和删除操作。 活动预约管理模块的实现 学生可以添加活动预约信息,管理员可以查看活动预约信息,并可进行审核、修改和删除操作。

    2025年福建三明公交路线及站点矢量shp数据.zip

    2025年福建三明公交路线及站点矢量shp数据.zip

    高性能计算集群操作系统迁移的技术细节及实施方案

    内容概要:本文详细介绍了高性能计算集群的操作系统选型和迁移实施过程。主要内容包括操作系统迁移背景,如CentOS生命周期结束后的安全风险,硬件不兼容等问题;迁移内容涵盖管理节点和计算节点的操作系统更换及其与各类基础软件和计算软件的适配工作;详细展示了选型评估标准(如安全性、性能支持和技术社区),以及适配步骤(从软件调研到部署及用户引导)。还对迁移前后的性能进行了测试和对比,确认满足系统性能要求。 适合人群:面向高性能计算领域的IT管理和技术人员、系统管理员和相关领域的研究者。 使用场景及目标:旨在为那些需要进行大型运算集群改造的人群提供指导,帮助他们理解和实操操作系统迁移的整个过程。同时,确保新的操作系统能够与现有的硬件和各种应用无缝衔接,在迁移过程中保持集群工作的连贯性和效率。 其他说明:文中提供了大量的实际案例分析,包括交我算平台的具体实例,并探讨了不同Linux发行版的特性和优势(如openEuler、Rocky Linux)。此外还有性能测试的数据支撑,验证了新型操作系统是否能继续支持高性能计算任务的需求。

Global site tag (gtag.js) - Google Analytics