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

众所周知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构建界面_第1张图片

选择“Widget”模板:
Python瑞士军刀 -- 使用PyQt5构建界面_第2张图片

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

2.2 拖拽控件

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

2.3 设置信号槽

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

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

三. 从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文件来更新这些值。

你可能感兴趣的:(☆,Python)