python Pyside2模块详细介绍

一、基础篇

1、Python图形界面开发的几种方案

如果用 Python 语言开发 跨平台 的图形界面的程序,主要有3种选择:

  • Tkinter

    基于Tk的Python库,这是Python官方采用的标准库,优点是作为Python标准库、稳定、发布程序较小,缺点是控件相对较少。

  • wxPython

    基于wxWidgets的Python库,优点是控件比较丰富,缺点是稳定性相对差点、文档少、用户少。

  • PySide2、PyQt5

    基于Qt 的Python库,优点是控件比较丰富、跨平台体验好、文档完善、用户多。

    缺点是 库比较大,发布出来的程序比较大。

如果大家要开发小工具,界面比较简单,可以采用Tkinter。

如果是发布功能比较多的正式产品,采用 基于Qt的PySide2、PyQt5。

本教程介绍的就是 使用 PySide2、PyQt5 开发Python程序的图形界面。

2、PySide2、PyQt5 简介

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 就行了。反之亦然。

3、安装 PySide2

简易版本

pip install pyside2

更换国内安装源版本

pip install pyside2 -i https://pypi.tuna.tsinghua.edu.cn/simple

备注:

1)查看安装结果

pip freeze

2)确定安装位置(重复安装以获取安装位置,一般为Python安装目录下)

pip install Pyside2

4、安装PyQt5

简易版本

pip install pyqt5-tools

可同时安装 PyQt5 和 一些重要的工具,比如 Qt designer

5、配置Pycharm

目的:在PyCharm中自定义两个工具以便开发时使用

步骤:File->Settings->Tools->External Tools

点击 + 新增自定义工具

1)自定义 QtDesigner
目的:用于生成.ui文件

Name :QtDesigner
Group :Qt
Program :PySide2安装路径下的 designer.exe 路径
		例如:C:\Python\Python39\Scripts\pyside2-designer.exe
Working directory :$ProjectFileDir$
2)自定义 Pyside2-uic
目的:将制作好的.ui文件转化为.py文件

Name :Pyside2-uic
Group :Qt
Program :Python安装目录下Scripts\pyside2-uic.exe
   	例如:C:\Python\Python39\Scripts\pyside2-uic.exe						
Arguments :$FileName$ -o $FileNameWithoutExtension$.py
Working directory :$FileDir$
3)使用自定义工具编写Qt页面
1、点击Tools->Qt->QtDesigner进入ui设计界面
2、完成ui设计后将.ui文件保存在当前项目路径下
3、右击保存的.ui文件,使用自定义的Pyside2-uic工具将界面转化为Python文件

6、编写qt程序

1、在pycharm中点击Tools->Qt->QtDesigner进入ui设计界面
2、选择Main Window后点击创建
3、将左侧的Widget Box中的Push Button和Text Browser相继拖入到中间的Main Window中
4、在右侧的对象查看器中右击Main Window选择布局下的垂直布局
5、按住ctrl+s保存ui文件,文件名为demo_ui.ui
6、在pycharm中右击生成的demo_ui.ui文件,选择Qt->Pyside2-uic
7、在生成的demo_ui.py同级目录下new->python file,文件名为demo.py
8、demo.py编写如下代码,并run即可得到qt程序,在程序中点击按钮便在文本浏览器显示Hello world

demo.py

from PySide2.QtWidgets import QApplication, QMainWindow
from demo_ui import Ui_MainWindow
import sys


class MainWindow(QMainWindow):
    def __init__(self):
        # 首先找到 MainWindow 的父类(就是类 QMainWindow),然后把类 MainWindow 的对象转换为类 QMainWindow 的对象,然后调用对象的__init__()方法
        # super(MainWindow, self).__init__()  # python2写法
        super().__init__()  # python3写法
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        # 按钮signal绑定slot函数
        self.ui.pushButton.clicked.connect(self.handle)

    def handle(self):
        self.ui.textBrowser.append('Hello world')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    mw = MainWindow()
    mw.show()
    sys.exit(app.exec_())

7.发布程序

1、在cmd下执行 
	pip install pyinstaller
2、在cmd下进入demo.py所在目录,执行
	pyinstaller demo.py demo_ui.py --noconsole --hidden-import PySide2.QtXml

注释:	
	--noconsole 指定不要命令行窗口,否则我们的程序运行的时候,还会多一个黑窗口。 但是我建议大家可以先去掉这个参数,等确定运行成功后,再加上参数重新制作exe。因为这个黑窗口可以显示出程序的报错,这样我们容易找到问题的线索。

--hidden-import PySide2.QtXml 参数是因为这个 QtXml库是动态导入,PyInstaller没法分析出来,需要我们告诉它

3、这样就会在demo.py目录下产生一个名为dist的目录。里面就有一个名为demo的目录,我们的可执行程序 demo.exe 就在里面

在windows下第2步中的cmd命令,我们可以使用编写package.bat文件方式执行

package.bat

@echo off
pyinstaller demo.py demo_ui.py --noconsole --hidden-import PySide2.QtXml
pause
  • 20
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
PySide2 中内嵌 Chromium 浏览器需要使用 QtWebEngineWidgets 模块,而使用 Selenium 控制浏览器则需要安装相应的浏览器驱动。以下是一个简单的示例代码: ```python from PySide2.QtCore import QUrl from PySide2.QtGui import QWindow from PySide2.QtWidgets import QApplication from PySide2.QtWebEngineWidgets import QWebEngineView from selenium import webdriver from selenium.webdriver.chrome.webdriver import WebDriver from selenium.webdriver.chrome.options import Options import sys import time class CustomWebEngineView(QWebEngineView): def __init__(self): super().__init__() # 创建一个 Chrome 的 Options 对象 options = Options() options.add_argument('--disable-gpu') options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') options.add_argument('--headless') # 创建一个 Chrome 的 WebDriver 对象 self.driver: WebDriver = webdriver.Chrome(options=options) # 加载页面 self.load(QUrl('https://www.baidu.com')) def closeEvent(self, event): # 关闭 WebDriver self.driver.quit() super().closeEvent(event) if __name__ == '__main__': app = QApplication(sys.argv) # 创建一个窗口 window = QWindow() # 创建一个内嵌的 WebEngineView web_view = CustomWebEngineView() web_view.setParent(window) # 显示窗口 window.show() # 进入事件循环 sys.exit(app.exec_()) ``` 在上面的示例代码中,首先我们自定义了一个 `CustomWebEngineView` 类,继承自 `QWebEngineView`,在该类的构造函数中创建了一个 Chrome 的 WebDriver 对象,并加载了一个百度首页的页面。 然后我们创建了一个窗口,并将 `CustomWebEngineView` 对象设置为该窗口的子控件。最后调用 `app.exec_()` 进入事件循环,显示窗口。在窗口关闭时,我们需要手动调用 `driver.quit()` 关闭 WebDriver。 需要注意的是,在使用 PySide2 内嵌 Chromium 浏览器时,由于 Chromium 的多进程架构,我们需要在启动 Chrome 的时候禁用 GPU 和沙盒模式。另外,为了避免浏览器窗口弹出,我们使用了 `--headless` 参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值