充分体验到知识循环再用的好处,原本对Python、wxWidgets没有接触的,天黑天亮之间,已经作了一个半成品的桌面程序出来。
1.选型
通常选型之后,都会迫切的告诉别人自认为正确的原因,这时候路过的人就比较不幸了。
我选Python和wxWidgets,是因为.......
因为是发布到网上的小程序,要它很小,Java和.Net这两个还算当红但要装虚拟机的笨家伙最先out了,而Python在py2exe之后压成rar才3M,如果有心思还可以弄得更小。
选wxWidgets是因为它可以通行于Windows,Linux两个位面,另外Fox也能通用,不过wxWidgets是像SWT一样用Native Widgets的,在WinXP上比较好看。
用Python而不是C++,是为了快速开发。当然,心底里其实是贪好玩。本来喜欢Ruby的语法更纯洁一些,可惜wxRuby已经太久没更新了。
2.wxWidgets
所谓GUI框架,万变不离下面几点:
1.框架结构
拿个HelloWorld一看就懂,又是Application->Frame->Menu 的标准架构。
2.wxWidgets用法
来来去去还是Text框,选择框,按钮几个老面孔,在wxPython上把wxPython2.6-win32-docs-demos-2.6.1.0.exe档下载回来,就有C++版本的API手册与python版本的每个widgets的Demo Code。
3.控件与页面的Layout
一种方式是C# Winform和Swing那样在程序里生成组件和layout,经历过SWT手写代码画页面的折磨,再看到一层又一层的Container代码(wxWidgets里是Sizer)已经不觉得麻烦了。也有所见即所得的工具如BOA,不过毕竟没有Visual Studio for WinForm那么好,难以真正使用。
一种是像Delphi, VC或未来的XAML那样把控件和layout记在XML文件里。但我没有用。
4.事件分发机制
像 EVT_BUTTON(self,ID_UPLOAD, self.onUpload)这样的代码,挺简单的。
可见,只要有过GUI编程的经验,再学wxWidgets 很容易。
参考书:《Cross-Platform GUI Programming with wxWidgets》
《wxPython in Action》
3. Python
手边放一本Python的参考书,只要对动态语言有点感性认识,对着Sample Code能能猜就猜,猜不到就拿chm版的参考书来索引,也很容易入门。
最难的地方发生在遍历目录,那时候已经有点困了:
for root, dirs, files in os.walk('C:/projects/'):
print sum(getsize(join(root, name)) for name in files)
这是什么见鬼语法阿!!
原来os.walk('C:/projects") 的返回值是一个tuple。在C++ Boost库中接触过这个概念,平常函数都只能返回一个值,而tuple可以让你返回多个(这样就不用利用传址的参数来返回啦),所以就有了for root,dir,files in os.walk()这样的句子。
还有 print join(root,name) for name in files,原来python还有这种把闭包写在for的前面的简写法。
IDE最后还是用了Eclipse的插件PyDev,毕竟Eclipse看着比较舒服,其他编辑器做得那么难看,怎么还好意思收钱。
4.美化界面
因为wxWidgets用的是native widgets,不像Delphi,C# 和Swing有专门的look and feel 美化控件,所以美化的主要方式是为Toolbar和Button配上好看的图标,还有修饰整个软件的配色。
推荐Tango一个图标库:http://tango-project.org/ to make open source software beautiful...说出了我的心声啊,"顶尖儿的程序员必有完美主义艺术家之倾向。",目前的图标还不多,迅速更新中。
分享到:
相关推荐
python桌面开发手册。本人以前一直用的是C++,MFC,毕业到了公司以后,公司用python做流程,我 顺便最近研究了一下用python开发 windows 应用程序的整个流程
PyQt6图书管理系统 采用最新的PyQt6技术实现 数据库Mysql,操作数据库技术PyMysql。 时代的K速发展的今天造就了如今信息化中国的局面,在经济上,我国获得了经济强国的荣耀称号,在 外交上我国在与国际间的交流沟通正在...
Python界面程序开发应用技术.pdf
运行即可出现一个像素风桌面小宠物~
pyui4win最初是想将duilib扩展到python,这样可以用python快速开发绚丽桌面应用。但在开发过程中,发现duilib中存在很多bug和不足。现在pyui4win解决了duilib中设计器的一些bug,有些是非常严重的bug,比如几处经常...
# 2014.10.15 更新了memo.zip, 网盘的exe:修复:1.隔日启动不能正常加载json,加入:1.隐藏任务栏图标,2....即可用作桌面图标 程序在ubuntu测试基本没发现什么错误 注:第一次运行,由于没有便签内容,所以有可
用Python tkinter 开发的桌面便签程序 支持拖动、新建、保存、多种颜色主题等丰富多样的功能 详细教程见 https://blog.csdn.net/weixin_48448842/article/details/118046643
Python代码书写规范与基本使⽤
基于python开发的一个桌面宠物源码.zip基于python开发的一个桌面宠物源码.zip基于python开发的一个桌面宠物源码.zip基于python开发的一个桌面宠物源码.zip基于python开发的一个桌面宠物源码.zip基于python开发的一个...
Python+HTML+PyQT5进行桌面开发应用,使用QWebEngineView组件,运用QWebChannel进行python和JavaScript交互。
Python脚本项目源码-桌面宠物
本源码是基于最新的QT6进行开发设计 内容包括系统全部的代码源码,包括ui设计的源码。在本地python安装有pyqt6库和创建相应的数据库后,可直接运行 可以作为本科专科阶段的毕业模板使用。 其中涉及到数据库连接,...
本资源是python+html桌面应用实例。主要是用vue实现前端页面,用pywebview来加载、显示html页面。
一个电脑桌面自动化操作框架Desktop Automation framework
统信桌面操作系统PXE部署Python脚本 统信桌面操作系统PXE部署Python脚本 统信桌面操作系统PXE部署Python脚本
Chromium项目主要致力于Google Chrome应用程序的开发,而CEF则致力于促进第三方应用程序中嵌入式浏览器的使用案例。 许多应用程序使用CEF控制,全球安装了超过。 CEF有许多用例: 将其用作基于HTML5的现代呈现引擎...
PyQt5的可视化的windows桌面应用程序开发具备完整功能的源代码 最基础的,包括: 界面的设计、事件的响应和绑定、代码的扩展和测试。 具体可以查看对应的博客文章: ...欢迎关注、收藏、下载学习。...
到目前为止,我们讨论了不少范例程序,它们有一个共同的特征:在程序运行时,出现的界面非黑即白,很单调,不够吸引...难道 Python 程序不能有更好的、更让人愉悦的、更有视觉冲击力的程序界面吗?答案当然是否定的!
Python制作的桌面宠物,随机从64种宠物里生成,从一款是你喜欢的,赶紧来认养吧,完整源代码请在文末链接下载,运行程序前请先安装PyQt5。程序入口DesktopPet.py