PyQt5入门,Python的GUI应用程序开发利器

在众多的Python GUI库中,PyQt5无疑是其中的佼佼者。

通过简单的示例让大家快速上手PyQt5。

1、PyQt5介绍

PyQt5是一个用于创建图形用户界面(GUI)应用程序的Python库,它是基于Qt框架的。

PyQt5将Qt库的强大功能带到了Python编程语言中,使得开发者能够利用Python的简洁语法来构建美观且功能强大的GUI应用。

2、PyQt5的优势

(1)跨平台:PyQt5 支持多种操作系统,如 Windows、macOS、Linux 等。

(2)丰富的控件:PyQt5 提供了丰富的控件,如按钮、文本框、列表等,满足各种界面需求。

(3)信号与槽机制:PyQt5 通过信号与槽机制实现控件之间的通信,使得界面更新和事件处理更加高效。

(4)自定义样式:PyQt5 支持自定义样式,可以根据需求调整界面美观程度。

3、安装PyQt5

(1)创建python虚拟环境使用:python -m venv 虚拟环境名称

(2)激活并进入虚拟环境:

  • 在MacOS或Linux系统下使用:source 虚拟环境的名称/bin/activate
  • 在windows系统下使用:虚拟环境的名称/Scripts/activate

(3)在终端或命令提示符中输入以下命令即可安装PyQt5:

pip install pyqt5

4、PyQt5的使用

(1)简单的窗口,并写上Hello world

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel

if __name__ == '__main__':
    aap = QApplication(sys.argv)

    w = QWidget()
    w.setWindowTitle("简单的窗口")
    w.setGeometry(150, 150, 300, 200)  # 四个值分别是:x轴,y轴,宽,高

    label = QLabel("Hello World", w)  # 指定这个控件名称及父窗口
    label.move(100, 80)  # 修改控件位置,两值分别是:x轴,y轴,位置起点是父窗口的左上脚

    w.show()

    sys.exit(aap.exec_())
Demo窗口hello world程序

(2)创建窗口

在 PyQt5 中,创建窗口需要从 QMainWindow、QWidget等类中派生一个类,并在其中定义窗口的布局和控件。

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget

class MyMainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("创建窗口")
        self.initUI()

    def initUI(self):
        self.centralWidget = QWidget(self)
        self.setCentralWidget(self.centralWidget)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MyMainWindow()
    window.show()
    sys.exit(app.exec_())

注:QMainWindow与QWidget区别:QWidget是一个基本的窗口组件,不提供任何高级功能,如标题栏、菜单栏等;QMainWindow是QWidget子类,继承了QWidget的所有功能,还有自己的功能,提供了窗口的标题栏、菜单栏等高级功能。 创建窗口

(3)添加控件

在 PyQt5 中,可以通过 QVBoxLayout、QHBoxLayout 等布局类为窗口添加各种控件。

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget, QLineEdit


class MyMainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("创建窗口")
        self.initUI()

    def initUI(self):
        self.centralWidget = QWidget(self)
        self.setCentralWidget(self.centralWidget)

        # 添加控件
        self.layout = QVBoxLayout(self.centralWidget)
        self.button = QPushButton("点我", self)
        self.layout.addWidget(self.button)
        self.lineEdit = QLineEdit(self)
        self.layout.addWidget(self.lineEdit)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MyMainWindow()
    window.show()
    sys.exit(app.exec_())
添加控件

(4)信号与槽

在 PyQt5 中,可以通过信号与槽机制实现控件之间的通信,使得界面更新和事件处理更加高效。

示例:实现按钮点击后,文本框显示"Hello, PyQt5!"

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget, QLineEdit


class MyMainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("创建窗口")
        self.initUI()

    def initUI(self):
        # 创建窗口
        self.centralWidget = QWidget(self)
        self.setCentralWidget(self.centralWidget)

        # 添加控件
        self.layout = QVBoxLayout(self.centralWidget)
        self.button = QPushButton("点我", self)
        self.layout.addWidget(self.button)
        self.lineEdit = QLineEdit(self)
        self.layout.addWidget(self.lineEdit)

        # 给按钮增加事件
        self.button.clicked.connect(self.onClicked)

    def onClicked(self):
        self.lineEdit.setText("Hello, PyQt5!")


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MyMainWindow()
    window.show()
    sys.exit(app.exec_())
信号与槽实现组件通信

简单介绍了 PyQt5 的优势、安装方法、以及写一个Demo的窗口Hello World程序。

并通过简单的示例,展示了如何创建一个窗口、添加按钮和文本框控件,以及通过信号与槽机制实现按钮点击后文本框更新文本的功能。