pyqt学习总结
一、学习来由:
近期一段时间,应朋友的须要,完毕一款抓取软件。一般而言,python是我比較熟悉的语言,又有丰富的抓取和解析模块,所以果断选择之。
而这远远不是重点,后台程序在工作做常常写,所以比較熟悉,完毕了多线程mini_crawler之后,接下来就是要开发可视化的界面,将功能包装成友好的工具。
真正的探索刚刚開始。
在探索过程中,发现非常多问题。首先是GUI工具的选择。关于这方面的介绍不算少,除了python自带的tk,还有window的wxwidgets和wxpython。
tk适合开发简单的界面,相对来说比較简陋,只是不须要安装其它的工具,对于简单的界面须要还是不错的选择。
wxpython也是经常使用的GUI开发系统。只是写起来比較复杂,界面部分须要自己全然开发。
对于我而言,须要用到的有:
1. 比較美观的界面,
2. 后台多线程,后台执行长操作,实时更新前端UI,
3. 内容表格显示,
4. excel格式存储。
5. 多种消息框和对话框。
二、工具的选择
tk太过简单,考虑了一下,果断放弃,wxpython调研了一段时间,还參考了他人开发的工具源代码。感觉比較复杂,开发量比較大,我的时间仅仅有两周,还是放弃了。
在此,简单吐槽一下,通常软件在公布的时候,出于各种目的,往往“金玉其外败絮当中”,败絮指的是代码或文件包装的复杂,看着非常乱,事实上真正的功能并不复杂。这一点在我自己生成软件之后,看到之前清晰的代码,变成一大堆头疼的文件夹和文件后,深有体会。
终于我的选择是pyqt。版本号为4.
选择的原因:qt还是比較成熟的GUI工具,pyqt简单而已就是其python版本号,大部分功能和接口都支持,用着也比較方便。另外当安装eric开发环境后,能够支持qt designer,能够用熟悉的拖动来完毕直观的设计,这一点还是非常有吸引力的。
比較悲催的是,pyqt的相关资料非常少,可參考的书籍似乎仅仅有英文版《Rapid GUI Programming with Python and Qt》,版本号还相对较早。有时候会比較吃力。
网络上的资料,往往是比較经常使用的总结,如我遇到的后台多线程与前端UI交互的问题,查询起来就比較困难,非常多地方仅仅有蜻蜓点水的介绍和解释,终于还的自己想办法攻克。
三、实践经历
兴许通过自己的实践经历,结合开发软件用到的工作功能,介绍一下自己的学习过程,与大家分享。
pyqt学习总结的更多相关文章
- PyQt学习随笔:QTableWidget的selectedRanges、setRangeSelected访问选中矩形范围的方法
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在QTableWidget对项的操作支持选中多个项的情况下,可以通过方法selectedRanges ...
- PyQt学习随笔:Model/View中TableView视图数据项编辑结果及视图数据项的访问
按照<PyQt学习随笔:Model/View中设置视图数据项可编辑的方法>的方法支持视图数据可编辑后,编辑后的数据无需主动保存,PyQt会自动将界面变更的数据保存到对应的Model存储中, ...
- PyQt学习随笔:Model/View架构中多个视图之间选择数据项同步
我们知道多个视图之间通过使用相同的model就可以实现数据的共享(具体请参考< PyQt学习随笔:ListView控件的视图和数据模型分离案例>),除了数据的共享之外,多个视图之间还可以同 ...
- PyQt学习随笔:Model和View之间的数据互动过程
在<PyQt学习随笔:Qt中tem Views(Model-Based)和Item Widgets(Item-Based)控件的用途和关系>中介绍了,Model用于存储数据,View用于展 ...
- PyQt学习随笔:Qt Designer调用帮助时报错找不到assistant.exe文件的解决办法
老猿是按照<第15.5节 PyQt5安装与配置>步骤安装的PyQt及相关工具,但最近在Qt Designer中点击帮助相关菜单时报错找不到assistant.exe文件,如图: 按照报错信 ...
- PyQt学习随笔:Model/View开发时在view数据项中设置不同角色数据的方法
在往Model中通过QStandardItem等类插入数据项时,除了实际插入的存储数据,还可以设置不同角色(请参考<PyQt学习随笔:Model/View中诸如DisplayRole的数据角色及 ...
- PyQt学习随笔:Model/View开发时从Model相关类派生自定义类需要注意的问题
在<PyQt学习随笔:重写setData方法截获Model/View中视图数据项编辑的注意事项>介绍的方法,从Model相关类派生自定义类,通过重写setData方法以获取View中数据的 ...
- PyQt学习随笔:重写setData方法截获Model/View中视图数据项编辑的注意事项
根据<PyQt学习随笔:Model/View中视图数据项编辑变动实时获取变动数据的方法>可以重写从PyQt的Model类继承的setData方法来实时截获View中对数据的更改,但需要注意 ...
- PyQt学习遇到的问题:重写notify发送的消息为什么首先给了一个QWindow对象?
在PyQt开发图形界面应用时,从QApplication派生的子类重写notify方法后(具体请参考<PyQt学习随笔:通过自定义类重写QApplication的notify方法捕获应用的所有消 ...
- PyQt学习随笔:通过自定义类重写QApplication的notify方法捕获应用的所有消息
PyQt程序通过调用QApplication类的exec_()(sys.exit(app.exec_()) 进入程序主循环,开始处理事件,它从事件队列中获取本地窗口系统事件,将它们转化为 QEvent ...
随机推荐
- VMware workstation 10.0的永久key
MA491-6NL5Q-AZAM0-ZH0N2-AAJ5A5A6F6-88247-XZH59-HL0Q6-8CD2VHF6QX-20187-2Z391-522NH-9AELT5F29M-48312-8 ...
- Eamcs ditaa基于字符图形产生的图像上
ditta和artist mode这是一个好兄弟.artist mode帮我创建一个字符模式速度,ditta是java计划,字符图形可被读取,并生成图像. ditta网站:http://ditaa.s ...
- 如何设置ubuntu自己主动的睡眠时间
我相信很多在学习linux的过程中.总会遇到,不时系统会冬眠自己主动,因此,即使再次输入password.么重要的内容怕别人看 另外假设你常常使用像Putty这样子的远程登录软件的话,假设你的linu ...
- 复制(1)——SQLServer 复制简介
原文:复制(1)--SQLServer 复制简介 前言: SQLServer的复制技术最少从SQLServer2000时代已经出现,当初是为了分布式计算,不是为了高可用.但是到了今天,复制也成为了一种 ...
- hdu4362 dp + 单调队列优化
dp传输方程很easy需要 dp[i][j] = min{dp[i - 1][k] + abs(pos[i][j] -pos[i - 1][j]) + cost[i][j]} n行m一排 每个传输扫描 ...
- bonecp使用数据源
bonecp.properties jdbc.driverClass=oracle.jdbc.driver.OracleDriver jdbc.jdbcUrl=jdbc:oracle:thin:@19 ...
- 先锋军Android注射技术《三》
继续 于<两>通过专门出台ptrace实施注射的技术解决方案,在这一章,我就为大家介绍一Android在独特的喷射技术,我点了他的名字--Component Injection.顾名思义. ...
- hadoop工作平台梳理
文章 http://blog.csdn.net/lili72/article/details/41130743 lili72 数据平台: 一. hadoop平台:Hbase.hive,storm,s ...
- Codeforces Round #274 (Div. 2) B. Towers
As you know, all the kids in Berland love playing with cubes. Little Petya has n towers consisting o ...
- UVa753/POJ1087_A Plug for UNIX(网络流最大流)(小白书图论专题)
解题报告 题意: n个插头m个设备k种转换器.求有多少设备无法插入. 思路: 定义源点和汇点,源点和设备相连,容量为1. 汇点和插头相连,容量也为1. 插头和设备相连,容量也为1. 可转换插头相连,容 ...