Python图像化界面(GUI)入门整理--pyside2、pyqt5

本文内容适合Python GUI初学者,仅把自己对于pyside2学习笔记简要分享整理
本文整理学习自白羽黑羽教Python

Pyside2 简介

Python的GUI的库常见包括Tkinter、PyQt5和Pyside2。Tkinter控件较少,适合开发简单工具。PyQt5和Pyside2则都是对Qt的封装,PyQt5由Riverbank Computing公司维护,历史更长,但是Pyside2因为由Qt公司维护,可以视为Qt的亲儿子,个人认为未来Pyside2 的前景会更好一些。此外PyQt是GPL/商业协议,PySide是LGPL/GPL/商业协议。

信号和槽概念(signal and slot)

在Qt中当发生如鼠标点击等事件时,就会发出一个信号signal,表示某项特定事件发生了,槽则代表了用于处理该事件的函数,有了信息和槽后需要特定的方式将他们绑定成为连接connect。

快速上手

此处提供一段简单代码,用于快速理解pyside2代码的整体结构,其中包括常用控件放置以及将信号和槽使用。

from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton,  QPlainTextEdit, QMessageBox

def handleClicked():   # 槽
    tEdit.setPlainText('Clicked')
    QMessageBox.about(win, 'Message', 'Button Clicked')

app = QApplication([])
win = QMainWindow()
win.resize(200, 100)
win.move(10, 20)
win.setWindowTitle('Test')
tEdit = QPlainTextEdit(win)
tEdit.setPlainText('Original')
tEdit.move(10,50)
button = QPushButton('CLICK', win)

button.clicked.connect(handleClicked) # 信号槽的绑定

win.show()
app.exec_()

上述代码为基础,handleClicked直接访问了全局变量,进行模块化封装后:

class TestWin():
    def __init__(self):
        super().__init__()
        self.win = QMainWindow()
        self.win.resize(200, 100)
        self.win.move(10, 20)
        self.win.setWindowTitle('Test')
        self.tEdit = QPlainTextEdit(self.win)
        self.tEdit.setPlainText('Original')
        self.tEdit.move(10, 50)
        self.tbutton = QPushButton('CLICK', self.win)
        self.tbutton.clicked.connect(self.handleClicked)

    def handleClicked(self):
        self.tEdit.setPlainText('Clicked')
        QMessageBox.about(self.win, 'Message', 'Button Clicked')

if __name__ == '__main__':
    app = QApplication()
    twin = TestWin()
    twin.win.show()
    app.exec_()

控件创建和界面布局

通过代码管理

上述快速上手中已经展示了如何通过代码创建控件,整体流程如下:

创建控件->设置大小resize->设置位置move->设置控件专有方法

Qt Designer管理

通过拖拉的方式放置控件,并配合属性进行详细设置,设置完成后保存为.ui文件。观察ui文件,其内容为xml格式保存了各个控件的详细信息。
Qt Designer工具位置Lib\site-packages\PySide2\designer

布局Layouts

常见的布局包括四种垂直布局、水平布局、表格布局和表单布局,引入布局以后最直观的影响就是当窗口大小改变时,借助不同布局的组合可以使得窗口自适应的变化。

垂直布局 Vertical Layout

控件从上到下垂直放置
Python图像化界面(GUI)入门整理--pyside2、pyqt5_第1张图片

水平布局 Horizontal Layout

控件从左到右水平放置
Python图像化界面(GUI)入门整理--pyside2、pyqt5_第2张图片

网格布局 Grid Layout

控件网格状摆放,有的控件可以占用多个格子

表单布局 Form Layout

类似于一个只有两列表格布局

控件介绍

控件介绍详见Qt官方文档
https://doc.qt.io/qtforpython/PySide2/QtGui/index.html
有关Pyside2的项目主页
https://doc.qt.io/qtforpython/PySide2/QtGui/index.html

发布程序

当完成界面设计以及代码逻辑后,想要生成可执行程序可以使用PyInstaller工具。

pyinstaller httpclient.py --noconsole --hidden-import PySide2.QtXml

--noconsole 表示程序运行时不现实命令行窗口
--hidden-import PySide2.QtXml 因为PySide2.QtXml是动态载入的,PyInstaller需要显式的指定。

你可能感兴趣的:(Python图像化界面(GUI)入门整理--pyside2、pyqt5)