Python界面编程之一----初识PyQt5

初识PyQt5(转载于–学点编程吧)

一、简介

PyQt5是基于Digia公司强大的图形程式框架Qt5的python接口,由一组python模块构成。PyQt5本身拥有超过620个类和6000函数及方法。在可以运行于多个平台,包括:Unix, Windows, and Mac OS。

PyQt5的类存在于如下模块当中:

● QtCore
● QtGui
● QtWidgets
● QtMultimedia
● QtBluetooth
● QtNetwork
● QtPositioning
● Enginio
● QtWebSockets
● QtWebKit
● QtWebKitWidgets
● QtXml
● QtSvg
● QtSql
● QtTest

QtCore模块涵盖了包的核心的非GUI功能,此模块被用于处理程序中涉及到的 time、文件、目录、数据类型、文本流、链接、mime、线程或进程等对象。

QtGui模块涵盖多种基本图形功能的类; 包括但不限于:窗口集、事件处理、2D图形、基本的图像和界面和字体文本。

QtWidgets模块包含了一整套UI元素组件,用于建立符合系统风格的classic界面,非常方便,可以在安装时选择是否使用此功能。

QtMultimedia模块包含了一套类库,该类库被用于处理多媒体事件,通过调用API接口访问摄像头、语音设备、收发消息(radio functionality)等。

QtBluetooth模块包含了处理蓝牙活动的类库,它的功能包括:扫描设备、连接、交互等行为(有没有感觉很高大上:))。

QtNetwork模块包含用于网络编程的类库,这组类程序通过提供便捷的TCP/IP 及 UDP 的 c/s 程式码集合,使得基于Qt的网络编程更容易。

QtPositioning模块用于获取位置信息,此模块允许使用多种方式达成定位,包括但不限于:卫星、无线网、文字信息。此应用一般用于网络地图定位系统。

Enginio模块用于构建客户端的应用程式库,用于在运行时访问 Qt Cloud 服务器托管的应用程序。

QtWebSockets模块包含了一组类程序,用以实现websocket协议。

QtWebKit包含了用于实现基于webkit2的网络浏览器的类库。

QtWebKitWidgets模块包含用于基于WebKit1的Web浏览器实现的类,用于基于QtWidgets的应用程序

QtXml模块包含了用于处理XML的类库,此模块为SAX和DOM API 的实现提供了方法。

QtSvg模块通过一组类,为显示矢量图形文件的内容提供了方法。

QtSql模块提供了数据库对象的接口以供使用

QtTest模块包含了可以通过单元测试,以调试PyQt5应用程式的功能。

PyQt5并不向下兼容PyQt4,主要是由于其有几个较大的改变。虽不兼容,但是旧代码调整到新库并不是很难。它们的主要差异如下:

  1. Python的模块已经重新构建,一些模块已经被放弃,如:QtScript。其他的模块被分割到一些子模块当中,如:QtGui,QtWebkit。

  2. 一些新的模块会推出,如:QtBluetooth,QtPositioning或Enginio。

  3. PyQt5仅支持新型信号和插槽。对SIGNAL()或SLOT()的调用不再支持(这点很重要哦!)。

  4. PyQt5不支持在Qt v5.0中标记为已弃用或过时的Qt API的任何部分。

二、PyQt5与PyQt4的主要差异

这里主要把信号与槽调用的不同以及各个模块引用的不同,简单的演示一下,给大家直观的认识一下,具体的介绍我们后面再谈:
PyQt4的编码如下:

import sys
from PyQt4.QtCore import (Qt, SIGNAL, SLOT)
from PyQt4.QtGui import (QWidget, QLCDNumber, QSlider, QVBoxLayout, QApplication)
class SigSlot(QWidget):
    def __init__(self,parent=None):
        QWidget.__init__(self)
        self.setWindowTitle('XXOO')
        lcd = QLCDNumber(self)
        slider = QSlider(Qt.Horizontal,self)

        vbox = QVBoxLayout()
        vbox.addWidget(lcd)
        vbox.addWidget(slider)

        self.setLayout(vbox)

        self.connect(slider,SIGNAL('valueChanged(int)'),lcd,SLOT('display(int)'))
        self.resize(350,250)

app = QApplication(sys.argv)
qb = SigSlot()
qb.show()
sys.exit(app.exec_())

PyQt5的编码如下:

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QWidget, QLCDNumber, QSlider, QVBoxLayout, QApplication)
class SigSlot(QWidget):
    def __init__(self,parent=None):
        QWidget.__init__(self)
        self.setWindowTitle('XXOO')
        lcd = QLCDNumber(self)
        slider = QSlider(Qt.Horizontal,self)

        vbox = QVBoxLayout()
        vbox.addWidget(lcd)
        vbox.addWidget(slider)

        self.setLayout(vbox)

        slider.valueChanged.connect(lcd.display)
        self.resize(350,250)

app = QApplication(sys.argv)
qb = SigSlot()
qb.show()
sys.exit(app.exec_())

执行结果如下:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值