`
jg142jg
  • 浏览: 12425 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

PyQt的学习(1) 入门

 
阅读更多

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的程序是怎么样子的,大概有个了解了:),下面就开始慢慢来了。我也需要睡觉去了。 
分享到:
评论

相关推荐

    pyqt4入门教程

    pyqt4入门教程 pyqt4入门必看 从基础学习 打好根基

    PyQt5入门教程

    pyqt5入门教程,pdf文档,避免图片和文字排版太乱,由于原来的资料保存的word,部分图片丢失,再也无法找到,以后找到会补上。 当然还是要感谢原作者

    pythonqt5教程从零开始-pyQt5QtDesigner简易入门教程.pdf

    pythonqt5教程从零开始_pyQt5QtDesigner简易⼊门教程 python3.6 & pyQt5 & QtDesigner 简易⼊门教程 1. python 官⽹下载安装python3.6并配置好环境; 2.cmd下 运⾏: pip install PyQt5 安装PyQt库; 3.cmd下运⾏: ...

    pyqt5开发学习笔记.doc

    让学习pyqt5的人快速入门,并以实际的例子从初步了解pyqt5学习方向以及提示学习过程的一些问题。

    Pyqt5系列(一).pdf

    。。。

    PyQt4入门指南 PDF中文版.rar_pyqt_python

    python学习文档,关于pyqt的,是一个入门文档

    51CTO下载-PyQt4入门指南.pdf

    51CTO下载-PyQt4入门指南.pdf, 简单明了学习pyqt4

    PyQt5 编写的指示灯类

    对于想要学习如何使用 PyQt5 绘制简单图形、处理用户交互以及了解自定义小部件的创建和使用的初学者来说,这是一个很好的入门资源。熟悉其他编程语言,并希望快速学习使用 PyQt5 来构建界面的开发者也可以受益于这个...

    基于pyqt5开发的串口调试工具源码(课程作业).zip

    3、用途:项目具有较高的学习借鉴价值,也适用于小白学习入门进阶。当然也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或者热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他...

    pyqt5-python-Gui入门教程

    pyqt5-python-Gui的入门教材,讲的非常简单易懂,建议学QT的初学者学习!

    pyqt五子棋.zip

    pyqt写的简单五子棋,界面简单,有计时,超时判输,单机版,非ai,未考虑禁手情况,连成5子即为输(赢),该项目可供初学者学习,高手略过。欢迎大家下载吐槽

    python pyqt5 系统学习课程

    课时06.QtDesigner快速入门.flv 课时07.将ui文件生成py文件.flv 课时08.在QtDesigner中使用水平布局.flv 课时09.在QtDesigner中使用垂直布局.flv 课时10.向栅格布局中拖动控件.flv 课时11.在QtDesigner中同时使用...

    使用 PyQt5 编写的 TCP 服务器APP

    它可以作为学习网络编程和服务器开发的入门教程,供开发者进行实践和参考。您可以根据需要进行进一步的定制和扩展,以满足特定的应用场景。 其他说明: 请注意,这个例程提供的是一个基础的 TCP 服务器框架

    python基于pyqt5的图书管理系统,学习项目或大作业,入门级项目

    1.功能:图书信息维护、读者信息维护、图书信息查询、读者信息查询,增删改查,适合新手入门。 图书信息维护模块包含了图书信息的添加,有从文件中添加和自己手动添加两种方式。读者信息维护也同理。 而图书信息查询...

    Python+Pyqt5基于深度学习实现的车标识别检测系统毕设源码(含数据集+模型+评估指标曲线包运行)

    Python+Pyqt5基于深度学习...3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进

    Python Gui编程-PyQt5开发与实战

    本门课程需要有python基础,从零基础带大家学习pyhon gui 编程,从界面设计到 初级控件,高级控件,信号和槽,事件,数据库,pyqt matplotlib来学习pyqt5.非常丰富的项目实战案例,股票看板,视频播放器,音乐播放器员工管理...

    pyqt5__pythonGui入门教程

    Qt在Python语言上移植的包PyQt5,跟Qt语法非常像,学习数据挖掘的时候使用PyQt5进行界面编程再好不过啦

Global site tag (gtag.js) - Google Analytics