前言
python作为一门脚本语言来讲,多用作后端开发,最近工作原因,深感掌握一门前端语言的重要性,先从图形界面开始下手,学习一门前端技术。练习代码同步到github
。
如果用 Python 语言开发 跨平台 的图形界面的程序,主要有3种选择:
- Tkinter
基于Tk的Python库,这是Python官方采用的标准库,优点是作为Python标准库、稳定、发布程序较小,缺点是控件相对较少。
可查看往期文章Python_GUI开发之Tkinter
- wxPython
基于wxWidgets的Python库,优点是控件比较丰富,缺点是稳定性相对差点、文档少、用户少。
- PySide2、PyQt5
基于Qt 的Python库,优点是控件比较丰富、跨平台体验好、文档完善、用户多。
缺点是 库比较大,发布出来的程序比较大。
选择
小工具开发,比如单页面,就一两个按钮,可以用Tkinter;
中大型工具开发,页面复杂,用PySide2、PyQt5。
我在写这篇文章的时候(2022/1/30)的时候,发现pyside6都已经出来了,所以改用pyside6
。
pyside6官网地址
Qt for Python 教程
用于 Python 的 Qt
看到qt请不要困惑,下文已经做出pyside和pyqt区别解释。
- pyside和pyqt区别
PySide2、PyQt5 都是基于著名的 Qt 库。
Qt库里面有非常强大的图形界面开发库,但是Qt库是C++语言开发的,PySide2、PyQt5可以让我们通过Python语言使用Qt。
但是 PySide2、PyQt5 这两者有什么区别呢?
可以形象地这样说: PySide2 是Qt的 亲儿子 , PyQt5 是Qt还没有亲儿子之前的收的 义子 (Riverbank Computing这个公司开发的)。
那为什么 PyQt5 这个义子 反而比 PySide2 这个亲儿子更出名呢?
原因很简单:PySide2 这亲儿子最近(2018年7月)才出生。
但是亲儿子毕竟是亲儿子,Qt准备大力培养,PySide2 或许更有前途。
已经在使用 PyQt5 的朋友不要皱眉, 两个库的使用 对程序员来说,差别很小:它们的调用接口几乎一模一样。
如果你的程序是PyQt5开发的,通常只要略作修改,比如把导入的名字从 PyQt5 换成 PySide2 就行了。反之亦然。
安装
pip install pyside6
安装成功的标志:pip list列表里有PySide6即可。
选择PySide开发的很重要的一个原因,是可以通过GUI界面设计工具
进行快速开发,通过拖拽元素的形式,快速完成前端布局,然后再和后端接口交互。
设计工具随着pip就一起下载下来了,非常方便,在你的python安装目录xxx\Python38\Lib\site-packages\PySide6
下,名字叫designer.exe
,就是一个exe软件,双击运行即可。
界面展示:
如图,我们就可以进行前端开发了。
开发
首先我们要明确一点,gui设计工具是辅助设计,我们写前端其实还是写代码,只不过gui设计工具帮助我们进行了很多封装,减少了我们的工作量,并不意味着不需要写代码,可能最后还是要转为代码进行调整,更不意味着我们不能用代码完成相应的功能!任何可以通过设计工具完成的界面设计,通过纯代码都可以完成!!!
工具认识
这个不详细介绍了,建议看视频:designer介绍及学习
代码和工具的简单对比
代码实现
import sys
from PySide6 import QtCore, QtWidgets, QtGui
class MyWidget(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.button = QtWidgets.QPushButton("点这里")
self.layout = QtWidgets.QVBoxLayout(self)
self.layout.addWidget(self.button)
self.button.clicked.connect