Python瑞士军刀 -- 使用PyQt5构建界面

时间:2021-12-28 23:03:26

众所周知Qt是一个跨平台的C++开发框架,它包含界面UI、网络、文件、WebKit等部分。而PyQt5就是Qt在Python语言上的绑定实现。

一. PyQt5安装

使用pip进行安装和卸载:

# 安装
pip3 install PyQt5

# 卸载
pip3 uninstall pyqt5

PyQt5官方只提供了针对Python3的二进制文件,对于Python2需要从官网自行下载源文件进程编译。

二. 使用Qt Creator设计界面

使用PyQt5开发界面最大的好处就是可以直接使用Qt Creator通过拖拽的方式设计界面,不需要通过繁琐的代码来控制界面布局。

如果之前安装了Qt,那么可以直接使用已经安装好的Qt Creator,如果没有安装,可以单独下载Qt Creator进行安装。

下载地址:http://download.qt.io/official_releases/qtcreator/4.5/4.5.0/qt-creator-opensource-windows-x86_64-4.5.0.exe

2.1 新建UI文件

启动Qt Creator,菜单“文件” –> “新建文件或项目” –> 选择“Qt Designer From”:
Python瑞士军刀 -- 使用PyQt5构建界面

选择“Widget”模板:
Python瑞士军刀 -- 使用PyQt5构建界面

指定文件名和保存目录(这里指定的文件名在后面会用到):
Python瑞士军刀 -- 使用PyQt5构建界面

2.2 拖拽控件

点击“编辑” --> “Edit Widgets”菜单(或快捷键F3)进入布局编辑模式,开始拖拽控件,也可以在属性窗口设置控件属性:
Python瑞士军刀 -- 使用PyQt5构建界面

2.3 设置信号槽

点击“编辑” --> “Edit Signals/Slots”菜单(或快捷键F4)进入信号槽编辑模式,开始编辑信号和槽,在该模式中,用鼠标选中需要设置信号槽的控件,然后轻轻拖动一下就可以弹出编辑界面:
Python瑞士军刀 -- 使用PyQt5构建界面

设置完之后如图:
Python瑞士军刀 -- 使用PyQt5构建界面

三. 从UI文件生成py文件

在安装PyQt5时会自动安装pyuic5工具,该工具可以将第二步中使用Qt Creator生成的Main.ui文件转成.py文件。

pyuic5 main.ui -o main.py

可以将生成的main.py文件拷贝到python工程目录方便引用。

四. Python脚本

# -*- coding: utf-8 -*-

from PyQt5 import QtWidgets, QtGui
from PyQt5.QtWidgets import QWidget, QMessageBox, QFileDialog
import sys
import os
from main import Ui_Main

class MainWindow(QWidget, Ui_Main):
def __init__(self):
super(MainWindow, self).__init__();
self.setupUi(self)

def onFile1Browser(self):
filename, _ = QFileDialog.getOpenFileName(self, 'Open file', './', 'Txt(*.txt)')
if filename:
self.lineEdit.setText(filename)

def onFile2Browser(self):
filename, _ = QFileDialog.getOpenFileName(self, 'Open file', './', 'Txt(*.txt)')
if filename:
self.lineEdit_2.setText(filename)

def onDoIt(self):
QMessageBox.information(self,"提示","大吉大利,今晚吃鸡", QMessageBox.Ok, QMessageBox.Ok)

def main():
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())


if __name__ == '__main__':
main()

在上面代码中有一行from main import Ui_Main代码,main表示main.py文件,Ui_Main中的Main是使用Qt Creator新建UI文件时指定的文件名。我们也可以直接修改main.py文件来更新这些值。