PyQt5基础学习

pyqt5-基础

PyQt5是一套来自Digia的Qt5应用框架和Python的粘合剂。支持Python2.x和Python3.x版本。

PyQt5以一套Python模块的形式来实现功能。它包含了超过620个类,600个方法和函数。它是一个多平台的工具套件,它可以运行在所有的主流操作系统中,包含Unix,Windows和Mac OS。PyQt5采用双重许可模式。开发者可以在GPL和社区授权之间选择。

PyQt5的类被划分在几个模块中,下面列出了这些模块:

  • QtCore :模块包含了非GUI的功能设计。这个模块被用来实现时间,文件和目录,不同数据类型,流,URL,mime类型,线程和进程。
  • QtGui:模块包含的类用于窗口化的系统结构,事件处理,2D绘图,基本图形,字体和文本。
  • QtWidgets:模块包含的类提供了一套UI元素来创建经典桌面风格用户界面。
  • QtMultimedia:模块包含的类用于处理多媒体内容和链接摄像头和无线电功能的API。
  • QtBluetooth:模块包含的类用于扫描蓝牙设备,并且和他们建立连接互动。
  • QtNetwork:模块包含的类用于网络编程,这些类使TCP/IP和UDP客户端/服务端编程更加容易和轻便。
  • QtPositioning:模块包含的类用于多种可获得资源的位置限定,包含卫星定位,Wi-Fi,或一个文本文件。
  • Enginio:模块用于解决客户端访问Qt云服务托管。
  • QtWebSockets:模块用于解决客户端访问Qt云服务托管。
  • QtWebKit:包含的关于浏览器的类用于解决基于WebKit2的支持库。
  • QtWebKitWidgets:模块包含的关于WebKit1的类基本解决浏览器使用基于QtWidgets应用问题。
  • QtXml:QtXml 模块包含的类用于解析XML文件。这个模块提供SAX和DOM API解决方法。
  • QtSvg:模块提供类用于显示SVG文件内容。Scalable Vector Graphics (SVG)
    是一种语言,用XML来描述二维图形和图形应用程序。
  • QtSql:模块提供类驱动数据库工作。
  • QtTest:模块包含了方法提供PyQt5应用的单元测试。

PyQt5不向后兼容PyQt4;这是一些在PyQt5中的重要改变。然而,将旧代码迁移到新的版本中并不是非常困难。不同点如下:

Python 模块已经被改写. 一些模块被舍弃 (QtScript), 部分的模块被分割成子模块 (QtGui, QtWebKit).
新的模块被引进, 包含 QtBluetooth, QtPositioning, 和 Enginio.
PyQt5 只支持最新风格的信号和槽的写法. SIGNAL()和SLOT()的调用将不会被长时间支持.
PyQt5 不支持任何在Qt 5.0版本中弃用或取消的API.
安装

pip install pyqt5

1、示例:简单的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon

def show_w():
    """显示窗口"""

    app = QApplication(sys.argv)  # 所有的PyQt5应用必须创建一个应用(Application)对象。
    # sys.argv参数是一个来自命令行的参数列表。

    w = QWidget()  # Qwidget组件是PyQt5中所有用户界面类的基础类。我们给QWidget提供了默认的构造方法。
    # 默认构造方法没有父类。没有父类的widget组件将被作为窗口使用。

    w.resize(500, 500)  # resize()方法调整了widget组件的大小。它现在是500px宽,500px高。
    w.move(500, 100)  # move()方法移动widget组件到一个位置,这个位置是屏幕上x=500,y=200的坐标。
    w.setWindowTitle('my python')  # 设置了窗口的标题。这个标题显示在标题栏中。
    w.setWindowIcon(QIcon('图标.png')) # 设置了窗口的图标。 显示在左上角。
    w.show()  # show()方法在屏幕上显示出widget。一个widget对象在这里第一次被在内存中创建,并且之后在屏幕上显示。

    sys.exit(app.exec_())  # 应用进入主循环。在这个地方,事件处理开始执行。主循环用于接收来自窗口触发的事件,
    # 并且转发他们到widget应用上处理。如果我们调用exit()方法或主widget组件被销毁,主循环将退出。
    # sys.exit()方法确保一个不留垃圾的退出。系统环境将会被通知应用是怎样被结束的。


if __name__ == '__main__':
    show_w()
效果

PyQt5基础学习_第1张图片

2、示例:应用图标、按钮、窗口关闭

引入相关模块

import sys
from PyQt5.QtWidgets import (QWidget, QToolTip, QDesktopWidget, QMessageBox,QTextEdit,QLabel,
    QPushButton, QApplication,QMainWindow, QAction, qApp, QHBoxLayout, QVBoxLayout,QGridLayout,
    QLineEdit)
from PyQt5.QtGui import QFont,QIcon
from PyQt5.QtCore import QCoreApplication

提示文本

class PromptText(QWidget):
 
    def __init__(self):
        super().__init__()
        self.initUI()
 
    def initUI(self):
        QToolTip.setFont(QFont('SansSerif', 10))  # 这个静态方法设置了用于提示框的字体。
        # 这里使用10px大小的SansSerif字体。
        self.setToolTip('This is a QWidget widget')  # 调用setTooltip()方法创建提示框。
        # 可以在提示框中使用富文本格式。
        btn = QPushButton('Button', self)  # 创建按钮
        btn.setToolTip('This is a QPushButton widget')  # 设置按钮提示框
        btn.resize(btn.sizeHint())  # 改变按钮大小
        btn.move(300, 100)  # 移动按钮位置
        self.setGeometry(300, 100, 600, 600)
        self.setWindowTitle('Tooltips')
        self.show()
 
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = PromptText()
    sys.exit(app.exec_())
效果

PyQt5基础学习_第2张图片

按钮:

QPushButton(string text, QWidget parent = None)
# text参数是将显示在按钮中的内容。
# parent参数是一个用来放置我们按钮的组件。在下文例子中将会是QWidget组件。
# 一个应用的组件是分层结构的。在这个分层内,大多数组件都有父类。没有父类的组件是顶级窗口。

明显的关闭窗口的方法是点击标题栏的X标记。

# ##***关闭窗口***## #
class CloseW(QWidget):

   def __init__(self):
       super().__init__()
       self.initUI()

   def initUI(self):
       qbtn = QPushButton('Quit', self)  # 创建了一个按钮。按钮是一个QPushButton类的实例。
       # 构造方法的第一个参数是显示在button上的标签文本。第二个参数是父组件。
       # 父组件是Example组件,它继承了QWiget类。
       qbtn.clicked.connect(QCoreApplication.instance().quit)
       qbtn.resize(qbtn.sizeHint())
       qbtn.move(500, 50)
       self.setGeometry(300, 100, 600, 600)
       self.setWindowTitle('excise')
       self.show()

if __name__ == '__main__':
   app = QApplication(sys.argv)
   ex = CloseW()
   sys.exit(app.exec_())

信号&槽机制

qbtn.clicked.connect(QCoreApplication.instance().quit)

在PyQt5中,事件处理系统由信号&槽机制建立。如果我们点击了按钮,信号clicked被发送。槽可以是Qt内置的槽或Python 的一个方法调用。

你可能感兴趣的:(个人,python)