PyQt的学习(1) 入门
2010年06月17日
write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 讨论新闻组及文件 动机: 刚学习完Python,借鉴以前学习C++时的经验,当时用MFC巩固了C++的学习,并且可以做出实际的程序,给了我继续学习的动力,学习Qt也是出于类似的目的。 为什么我要写,为了学习。不仅仅为了将来有个可以用的,好用的跨平台GUI库,也为了用Python快速开发时也能有个GUI库,但是又不喜欢TK,那么,综合考虑,Qt也就是不错的考虑了。 综述 这些文章基本遵循《C++ GUI Qt 4编程》第2版(C++ GUI Programming with Qt4, Second Edition)的流程,文字可能会很少,除非自己想出的例子,不然例子就是书中C++例子的Python版本,基本上,可以以此书为蓝本对照这些文章中的例子来看。 虽然用途不算太大,但是考虑到PyQt的好教材是如此的稀少,这样也不算完全没有价值吧,毕竟还有只明白Python不懂C++的人。 这里有一本PyQt的书《GUI Programming with Python: Qt Edition》,但是老到基本上是属于Qt2时代的东西了。 至于PyQt 嘛,你不会不知道到google上搜索一下,取得其下载地址吧?安装方式如此简单,点击下一步以后,就可以在Python中通过import PyQt4来使用这个库了。 HelloWorld 自从K&R后,好像所有的程序语言讲解都是以HelloWorld开始,我们也不免俗吧,我们从HelloQT开始。并且,这个例子也可以作为一个测试程序,测试一下看看安装PyQt是否成功。 HelloQt.pyw 1 import sys 2 from PyQt4 import QtGui 3 4 5 app = QtGui.QApplication(sys.argv) 6 label = QtGui.QLabel("Hello Qt!") 7 label.show() 8 9 sys.exit(app.exec_()) 这样,就是一个现实"Hello Qt"的窗口,利用了QLabel部件。--说明一下,Qt中将MFC中常常称作控件(control)的东西称作部件(Widget),其实一回事。 这里也可以看出Qt的足够简洁,我很欣赏,而其对象使用的风格和方式也是比较好的,不然,尝试用VS生成一个类似的MFC程序试试?^^ 其实这里还不足以见证Qt的强大,看下面的例子,QLabel竟然至此HTML样式。。。。。-_-! MoreHelloQt.pyw 1 import sys 2 from PyQt4 import QtGui 3 4 5 app = QtGui.QApplication(sys.argv) 6 label = QtGui.QLabel(" Hello QT! ") #这里我没有办法让CSDN不将其解释为HTML。。。所以,参考界面的源代码看看是什么吧 7 label.show() 8 9 sys.exit(app.exec_()) 强大吧:) Qt(C++) VS PyQt 这里,顺面比较一下PyQt与普通Qt(C++)生成程序的区别。一般而言,两者速度没有可比性,但是,速度在这里不是主要问题,原因在于PyQt的核心也就是Qt库,那是用C++写的,这样,一般而言不会占用太多时间的逻辑代码速度慢点,不会成为瓶颈,使得PyQt的程序可以跑得足够的快。但是,使用方式上,却没有失去Python的优雅语法,快速开发的能力,也结合了Qt的强大,呵呵,广告用语。。。。。。。。。。。来点实在的。 左边的是用C++开发出来的Qt程序,右边是PyQt开发出来的程序,由于都是使用了同一个库,看不出两者的区别。基本上,多懂了一种语言,就多了一种选择。。。比如说这个时候的Python。 建立连接 quit.pyw 1 import sys 2 from PyQt4 import QtCore, QtGui 3 4 app = QtGui.QApplication(sys.argv) 5 6 quit = QtGui.QPushButton("Quit") 7 8 QtCore.QObject.connect(quit, QtCore.SIGNAL("clicked()"), 9 app, QtCore.SLOT("quit()")) 10 11 quit.show() 12 sys.exit(app.exec_()) 这里展示了Qt的信槽模式,有点怪异的是,在Python中,信号,槽,都是用字符串来表示-_-!这点似乎有点奇怪。 我还不懂Qt的原理,也没有看过Qt的源代码,但是总是感觉这里奇怪,于是我翻看了一下Qt的SIGNAL,SLOT宏,于是一切也就没有那么奇怪了。 # define SLOT(a) qFlagLocation("1"#a QLOCATION) # define SIGNAL(a) qFlagLocation("2"#a QLOCATION) 本来,他们就是以字符串来表示的。。。。。。。。我原本还以为在Qt中这些都是通过回调函数的形式出现的呢。。。。。。。汗-_-!真那样,与一般的WxWidget原理有啥不同啊。。。呵呵,看来,Qt的原理还得好好理解理解。其实就现在的信息看,无非也就是Observer模式的一种扩展,再难也难不到哪儿去。 在PyQt的安装包中,有个tutorial,展示了更复杂一点的button使用方法,可以参考参考 morequit.pyw 1 import sys 2 from PyQt4 import QtCore, QtGui 3 4 5 app = QtGui.QApplication(sys.argv) 6 7 quit = QtGui.QPushButton("Quit") 8 quit.resize(75, 30) 9 quit.setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold)) 10 11 QtCore.QObject.connect(quit, QtCore.SIGNAL("clicked()"), 12 app, QtCore.SLOT("quit()")) 13 14 quit.show() 15 sys.exit(app.exec_()) 分别是设置Button的大小和按钮文字的字体和样式,这个阶段就不深抠细节了,了解概念和Qt大概的风格就好。 窗口部件的布局 用过MFC的人都知道在MFC中创建一个随窗口动态改变控件大小的程序的困难。。。。。。需要每次OnMove,OnSize的时候去重新计算控件的大小,为了保持布局合理,最好还得将所有控件的位置用百分比来计算,痛苦不言而喻,可以参考我写的正则表达式测试程序0.3版(要么就是更老的版本)。但是在Qt中好像就要简单的比较多。看看示例: layout.pyw 1 import sys 2 from PyQt4 import QtCore, QtGui 3 4 app = QtGui.QApplication(sys.argv) 5 6 window = QtGui.QWidget() 7 8 spinBox = QtGui.QSpinBox() 9 slider = QtGui.QSlider(QtCore.Qt.Horizontal) 10 spinBox.setRange(0, 130) 11 slider.setRange(0, 130) 12 13 QtCore.QObject.connect(spinBox, QtCore.SIGNAL("valueChanged(int)"), 14 slider, QtCore.SLOT("setValue(int)")) 15 QtCore.QObject.connect(slider, QtCore.SIGNAL("valueChanged(int)"), 16 spinBox, QtCore.SLOT("setValue(int)")) 17 spinBox.setValue(35) 18 19 layout = QtGui.QHBoxLayout() 20 layout.addWidget(spinBox) 21 layout.addWidget(slider) 22 window.setLayout(layout) 23 24 window.show() 25 sys.exit(app.exec_()) 行了,基本上PyQt的程序是怎么样子的,大概有个了解了:),下面就开始慢慢来了。我也需要睡觉去了。
发表评论
-
使用 SQLAlchemy
2012-01-20 09:43 2268使用 SQLAlchemy 2010年11月16日 这篇 ... -
云平台---网站主机提供(微软& google)
2012-01-20 09:43 567云平台---网站主机提供(微软& google) 2 ... -
.net DLR IronPython- Silverlight 微软的战略性眼光
2012-01-20 09:43 619.net DLR IronPython- Silver ... -
SELinux
2012-01-20 09:43 459SELinux 2010年12月08日 SELinux( ... -
要低调做人一定要低调
2012-01-19 14:48 441要低调做人一定要低调 ... -
复制千万业绩
2012-01-19 14:48 429复制千万业绩 2011年04月30日 ... -
20110722
2012-01-19 14:48 57120110722 2011年07月22日 1,(部门名称 ... -
2011-7-13
2012-01-19 14:48 5712011-7-13 2011年07月13日 ... -
linux笔记3
2012-01-17 04:32 952linux笔记3 2011年06月13日 ... -
WINDOWS XP 桌面主题的安装制作
2012-01-17 04:32 792WINDOWS XP 桌面主题的安装制作 2011年04月1 ... -
[转]Linux服务器性能评估与优化
2012-01-17 04:32 421[转]Linux服务器性能评估 ... -
我电脑的系统出现问题
2012-01-17 04:32 548我电脑的系统出现问题 2011年02月17日 我电脑的 ... -
aix的vmstat与iostat详解(摘)
2012-01-17 04:32 1242aix的vmstat与iostat详解(摘 ... -
陕西省经贸洽谈会在维也纳成功举办
2012-01-16 03:24 554陕西省经贸洽谈会在维 ... -
游客屈指可数的人间天堂――四千美岛
2012-01-16 03:24 779游客屈指可数的人间天 ... -
逃离河内
2012-01-16 03:23 551逃离河内 2010年04月09日 ...
相关推荐
pyqt4入门教程 pyqt4入门必看 从基础学习 打好根基
pyqt5入门教程,pdf文档,避免图片和文字排版太乱,由于原来的资料保存的word,部分图片丢失,再也无法找到,以后找到会补上。 当然还是要感谢原作者
pythonqt5教程从零开始_pyQt5QtDesigner简易⼊门教程 python3.6 & pyQt5 & QtDesigner 简易⼊门教程 1. python 官⽹下载安装python3.6并配置好环境; 2.cmd下 运⾏: pip install PyQt5 安装PyQt库; 3.cmd下运⾏: ...
让学习pyqt5的人快速入门,并以实际的例子从初步了解pyqt5学习方向以及提示学习过程的一些问题。
。。。
python学习文档,关于pyqt的,是一个入门文档
51CTO下载-PyQt4入门指南.pdf, 简单明了学习pyqt4
对于想要学习如何使用 PyQt5 绘制简单图形、处理用户交互以及了解自定义小部件的创建和使用的初学者来说,这是一个很好的入门资源。熟悉其他编程语言,并希望快速学习使用 PyQt5 来构建界面的开发者也可以受益于这个...
3、用途:项目具有较高的学习借鉴价值,也适用于小白学习入门进阶。当然也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或者热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他...
pyqt5-python-Gui的入门教材,讲的非常简单易懂,建议学QT的初学者学习!
pyqt写的简单五子棋,界面简单,有计时,超时判输,单机版,非ai,未考虑禁手情况,连成5子即为输(赢),该项目可供初学者学习,高手略过。欢迎大家下载吐槽
课时06.QtDesigner快速入门.flv 课时07.将ui文件生成py文件.flv 课时08.在QtDesigner中使用水平布局.flv 课时09.在QtDesigner中使用垂直布局.flv 课时10.向栅格布局中拖动控件.flv 课时11.在QtDesigner中同时使用...
它可以作为学习网络编程和服务器开发的入门教程,供开发者进行实践和参考。您可以根据需要进行进一步的定制和扩展,以满足特定的应用场景。 其他说明: 请注意,这个例程提供的是一个基础的 TCP 服务器框架
1.功能:图书信息维护、读者信息维护、图书信息查询、读者信息查询,增删改查,适合新手入门。 图书信息维护模块包含了图书信息的添加,有从文件中添加和自己手动添加两种方式。读者信息维护也同理。 而图书信息查询...
Python+Pyqt5基于深度学习...3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进
本门课程需要有python基础,从零基础带大家学习pyhon gui 编程,从界面设计到 初级控件,高级控件,信号和槽,事件,数据库,pyqt matplotlib来学习pyqt5.非常丰富的项目实战案例,股票看板,视频播放器,音乐播放器员工管理...
Qt在Python语言上移植的包PyQt5,跟Qt语法非常像,学习数据挖掘的时候使用PyQt5进行界面编程再好不过啦