欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PySide6精簡(jiǎn)教程(附圖文!)

 更新時(shí)間:2023年02月03日 11:46:44   作者:錢(qián)彬?(Qian?Bin)  
PySide6是Qt的Python封裝,是Qt for Python的組成之一,另一部分是Shiboken,下面這篇文章主要給大家介紹了關(guān)于PySide6精簡(jiǎn)教程的相關(guān)資料,需要的朋友可以參考下

一、PySide6概述

近幾年,受益于人工智能的崛起,Python語(yǔ)言幾乎以壓倒性優(yōu)勢(shì)在眾多編程語(yǔ)言中異軍突起,成為AI時(shí)代的首選語(yǔ)言。在很多情況下,我們想要以圖形化方式將我們的人工智能算法打包提供給用戶使用,這時(shí)候選擇以python為主的GUI框架就非常合適了。

QT是眾多GUI框架里面非常著名的一款,它本身由C++開(kāi)發(fā),天然支持基于C++的GUI編程,編出來(lái)的圖形化軟件在當(dāng)今眾多GUI框架中運(yùn)行效率幾乎是天花板級(jí)別的,擁有完善的第三方庫(kù),極其適合數(shù)字圖像處理、文檔排版、多媒體、3D建模等專(zhuān)業(yè)軟件開(kāi)發(fā)。與此同時(shí),QT還有一個(gè)強(qiáng)大的功能:支持跨平臺(tái),簡(jiǎn)單來(lái)理解,就是我們只需要編寫(xiě)一套代碼就可以同時(shí)在windows、mac、linux上運(yùn)行。

值得一提的是,QT對(duì)Python也有完善API支持,意味著我們可以規(guī)避C++編程的苦惱,使用更簡(jiǎn)潔的Python來(lái)代替C++開(kāi)發(fā)QT應(yīng)用,同樣具備跨平臺(tái)等優(yōu)勢(shì)。需要說(shuō)明的是,目前有兩種QT對(duì)應(yīng)的Python工具:PySide和PyQt。這里首先介紹下兩者的區(qū)別。

PySide是Qt公司的產(chǎn)品,PyQt是第三方公司的產(chǎn)品,二者用法基本相同,不過(guò)在使用協(xié)議上卻有很大差別。PySide可以在LGPL協(xié)議下使用,PyQt則在GPL協(xié)議下使用。這兩個(gè)協(xié)議的區(qū)別就是如果使用PyQt,那么你開(kāi)發(fā)的軟件必須開(kāi)源,否則就存在被告的風(fēng)險(xiǎn)。而PySide就沒(méi)有這種約束,不管是開(kāi)發(fā)商業(yè)閉源軟件還是開(kāi)源軟件,你都可以不開(kāi)源代碼,開(kāi)不開(kāi)源是你的自由。從這一點(diǎn)上來(lái)看,對(duì)于商業(yè)公司或者說(shuō)有商業(yè)考慮的軟件來(lái)說(shuō),我更傾向于推薦PySide,更何況PySide還是QT的親兒子。雖然PySide和PyQt在協(xié)議上有不同,但是兩者提供的接口幾乎是完全一致的。目前市面上PyQt的教程完全適合PySide,因此,對(duì)于學(xué)習(xí)者來(lái)說(shuō)學(xué)習(xí)任何一個(gè)都是可以的。

PySide目前常見(jiàn)的有兩個(gè)版本:PySide2和PySide6。PySide2由C++版的Qt5開(kāi)發(fā)而來(lái).,而PySide6對(duì)應(yīng)的則是C++版的Qt6。從PySide6開(kāi)始,PySide的命名也會(huì)與Qt的大版本號(hào)保持一致,不會(huì)再出現(xiàn)類(lèi)似PySide2對(duì)應(yīng)Qt5這種容易混淆的情況。

在使用層面上,PySide2和PySide6無(wú)過(guò)多的差異,只有一點(diǎn)需要注意,使用PySide6開(kāi)發(fā)的程序在默認(rèn)情況下不兼容Windows7系統(tǒng),這也是Qt6所決定的(即使是C++的QT6也不支持windows7)。

二、安裝PySide6

對(duì)于PySide開(kāi)發(fā)來(lái)說(shuō),我們不需要完整的安裝幾個(gè)G的Qt,可以像普通Python庫(kù)一樣直接通過(guò)pip安裝就行,大概占用300MB空間(需要提前安裝好python3以及pip)。

可以使用下面的命令安裝:

pip install --upgrade pip
pip install pyside6 -i https://mirror.baidu.com/pypi/simple

通過(guò)這樣簡(jiǎn)單的命令就可以完成安裝。

基于PySide6開(kāi)發(fā)GUI程序包含下面三個(gè)基本步驟:

  • 設(shè)計(jì)GUI,圖形化拖拽或手?jǐn)];
  • 響應(yīng)UI的操作(如點(diǎn)擊按鈕、輸入數(shù)據(jù)、服務(wù)器更新),使用信號(hào)與Slot連接界面和業(yè)務(wù);
  • 打包發(fā)布;

下面我們按照這個(gè)步驟來(lái)快速實(shí)現(xiàn)一遍。

三、設(shè)計(jì)界面

PySide為我們提供了兩種開(kāi)發(fā)界面的方式,一種叫QtWidget,是在網(wǎng)上教程中最常見(jiàn)的方式;另一種叫QML,是一種新型的開(kāi)發(fā)方式,也是Qt正在努力推廣的開(kāi)發(fā)方式。在本文中,我們主要使用QtWidget這種方式。

使用QtWidget開(kāi)發(fā)程序時(shí),也有兩種基本的使用方法,一種是通過(guò)designer開(kāi)發(fā)界面,另一種是用代碼手動(dòng)開(kāi)發(fā)界面。本文的目的是極簡(jiǎn)快速入門(mén),所以使用designer這種方便的方式進(jìn)行開(kāi)發(fā)。

我們可以在cmd終端中使用下面的命令啟動(dòng)designer:

pyside6-designer

啟動(dòng)后designer界面如下所示:

這里我們選擇Widget,并點(diǎn)擊創(chuàng)建,之后打開(kāi)的界面如下:

讓我們來(lái)看一下界面里都有什么:

  • 組件選擇區(qū):用來(lái)選擇組件,鼠標(biāo)選擇組件后就可以拖拽到窗口界面上,在本教程中會(huì)使用到一部分這里的組件;
  • 工作區(qū):用來(lái)布置界面,調(diào)整窗口,我們可以把工作區(qū)中的窗口隨意拖拽、調(diào)整大?。?/li>
  • 對(duì)象查看區(qū):查看界面上共有多少組件,以及它們的布局關(guān)系;
  • 屬性設(shè)置區(qū):設(shè)置組件的屬性,如文本、大小、名稱(chēng)等;

這里我們先把工作區(qū)中的窗口拖放到中間,再?gòu)慕M件選擇區(qū)里拖拽一個(gè)Label組件到窗口上,如下圖所示:

之后我們雙擊窗口里面的Label,輸入“你好??!世界”,我們會(huì)發(fā)現(xiàn)默認(rèn)的Label大小并不能完全展示文本,所以我們把Label的寬度拉長(zhǎng)(單擊Label后,拖住周?chē)纳钏{(lán)色方塊即可調(diào)整大小),如下圖所示:

接下來(lái)我們保存這個(gè)界面(Ctrl+S),或者在菜單欄選擇“文件”->“保存”,我們將其保存到桌面一個(gè)名為hello的文件夾中,保存命名為hello.ui。

注意,PySide6是不能直接使用ui文件的,我們還需要將其轉(zhuǎn)為py文件。首先cd到hello文件夾中,然后使用命令:

pyside6-uic hello.ui > ui.py

這樣我們就會(huì)得到一個(gè)ui.py文件,我們可以打開(kāi)看一下,里面都是一些界面代碼,如下所示:

# -*- coding: utf-8 -*-
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
    QMetaObject, QObject, QPoint, QRect,
    QSize, QTime, QUrl, Qt)
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
    QFont, QFontDatabase, QGradient, QIcon,
    QImage, QKeySequence, QLinearGradient, QPainter,
    QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QLabel, QSizePolicy, QWidget)

class Ui_Form(object):
    def setupUi(self, Form):
        if not Form.objectName():
            Form.setObjectName(u"Form")
        Form.resize(400, 300)
        self.label = QLabel(Form)
        self.label.setObjectName(u"label")
        self.label.setGeometry(QRect(180, 110, 101, 16))

        self.retranslateUi(Form)

        QMetaObject.connectSlotsByName(Form)
    # setupUi

    def retranslateUi(self, Form):
        Form.setWindowTitle(QCoreApplication.translate("Form", u"Form", None))
        self.label.setText(QCoreApplication.translate("Form", u"\u4f60\u597d\u554a\uff01\u4e16\u754c\uff01", None))
    # retranslateUi

如果不使用designer,那么這個(gè)ui.py就需要我們手動(dòng)來(lái)寫(xiě),所以,使用designer可以加快開(kāi)發(fā)速度,減少工作量,提升開(kāi)發(fā)效率。

這里還要個(gè)問(wèn)題要解決,我們使用命令pyside6-uic轉(zhuǎn)換出來(lái)的ui.py文件其保存格式不是utf-8,因此我們要用編輯器將其保存為utf-8才可以,否則后面加載該文件會(huì)報(bào)錯(cuò):

四、響應(yīng)UI操作

接下來(lái)我們就要寫(xiě)代碼來(lái)把界面展示出來(lái),新建一個(gè)名為hello的py文件:

# 導(dǎo)入sys
import sys

# 任何一個(gè)PySide界面程序都需要使用QApplication
# 我們要展示一個(gè)普通的窗口,所以需要導(dǎo)入QWidget,用來(lái)讓我們自己的類(lèi)繼承
from PySide6.QtWidgets import QApplication, QWidget
# 導(dǎo)入我們生成的界面
from ui import Ui_Form
 
# 繼承QWidget類(lèi),以獲取其屬性和方法
class MyWidget(QWidget):
    def __init__(self):
        super().__init__()
        # 設(shè)置界面為我們生成的界面
        self.ui = Ui_Form()
        self.ui.setupUi(self)

# 程序入口
if __name__ == "__main__":
    # 初始化QApplication,界面展示要包含在QApplication初始化之后,結(jié)束之前
    app = QApplication(sys.argv)
 
    # 初始化并展示我們的界面組件
    window = MyWidget()
    window.show()
    
    # 結(jié)束QApplication
    sys.exit(app.exec_())

注釋中包含了詳細(xì)的代碼說(shuō)明,接下來(lái)我們只要執(zhí)行這個(gè)py文件,就可以看到我們的界面了:

五、打包部署

我們最終希望交給用戶是一個(gè)純粹的exe可執(zhí)行文件(可以包含一些dll之類(lèi)的動(dòng)態(tài)庫(kù)或配置文件),用戶不需要安裝Python依賴(lài),直接雙擊就可以運(yùn)行展示。下面我們來(lái)實(shí)現(xiàn)最后的這個(gè)環(huán)節(jié)。

下面主要以windows為例。

首選安裝打包工具:

pip install pyinstaller -i https://mirror.baidu.com/pypi/simple
pip install auto-py-to-exe -i https://mirror.baidu.com/pypi/simple

運(yùn)行:auto-py-to-exe,會(huì)自動(dòng)打開(kāi)瀏覽器,然后進(jìn)入打包部署配置頁(yè)面,如下圖所示:

  • Script Location:選擇要打包的py主程序;
  • One File:選生成單一文件;
  • Console Window:選擇不顯示命令行窗口;
  • Icon:可設(shè)置圖標(biāo);
  • Additional Files:除了主程序以外其它的需要打包的文件;
  • Advanced:可設(shè)置UPX(從這里下載 https://upx.github.io/)然后點(diǎn)擊“Convert .PY to .EXE”就會(huì)自動(dòng)生成.exe文件了,在當(dāng)前目錄output子目錄下。該特性用于進(jìn)一步壓縮exe體積。

最終配置如下所示:

最終在hello文件下會(huì)生成output文件夾,其中就生成了打包部署好的exe文件,如下圖所示:

到這里本文就完成了一個(gè)簡(jiǎn)單的基于PySide6的項(xiàng)目開(kāi)發(fā)(雖然我們幾乎沒(méi)實(shí)現(xiàn)什么功能)。

總結(jié)

到此這篇關(guān)于PySide6精簡(jiǎn)教程的文章就介紹到這了,更多相關(guān)PySide6精簡(jiǎn)教程內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python操作Mysql實(shí)例代碼教程在線版(查詢手冊(cè))

    Python操作Mysql實(shí)例代碼教程在線版(查詢手冊(cè))

    本文介紹了Python操作MYSQL、執(zhí)行SQL語(yǔ)句、獲取結(jié)果集、遍歷結(jié)果集、取得某個(gè)字段、獲取表字段名、將圖片插入數(shù)據(jù)庫(kù)、執(zhí)行事務(wù)等各種代碼實(shí)例和詳細(xì)介紹,代碼居多,是一桌豐盛唯美的代碼大餐
    2013-02-02
  • python中cv2模塊安裝詳細(xì)圖文教程

    python中cv2模塊安裝詳細(xì)圖文教程

    在Python中cv2是OpenCV庫(kù)的一個(gè)模塊,這是一個(gè)開(kāi)源的計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)軟件庫(kù),下面這篇文章主要給大家介紹了關(guān)于python中cv2模塊安裝的相關(guān)資料,需要的朋友可以參考下
    2024-05-05
  • Mac下使用HomeBrew安裝python3

    Mac下使用HomeBrew安裝python3

    這篇文章介紹了Mac下使用HomeBrew安裝python3的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • pandas DataFrame where的實(shí)現(xiàn)示例

    pandas DataFrame where的實(shí)現(xiàn)示例

    pandas.DataFrame.where方法提供了一種靈活的方式來(lái)根據(jù)條件篩選和替換DataFrame中的元素,本文主要介紹了pandas DataFrame where的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2025-04-04
  • python網(wǎng)絡(luò)爬蟲(chóng)學(xué)習(xí)筆記(1)

    python網(wǎng)絡(luò)爬蟲(chóng)學(xué)習(xí)筆記(1)

    這篇文章主要為大家詳細(xì)介紹了python網(wǎng)絡(luò)爬蟲(chóng)學(xué)習(xí)筆記的第一篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • matplotlib源碼解析標(biāo)題實(shí)現(xiàn)(窗口標(biāo)題,標(biāo)題,子圖標(biāo)題不同之間的差異)

    matplotlib源碼解析標(biāo)題實(shí)現(xiàn)(窗口標(biāo)題,標(biāo)題,子圖標(biāo)題不同之間的差異)

    這篇文章主要介紹了matplotlib源碼解析標(biāo)題實(shí)現(xiàn)(窗口標(biāo)題,標(biāo)題,子圖標(biāo)題不同之間的差異),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 使用Pandas的Series方法繪制圖像教程

    使用Pandas的Series方法繪制圖像教程

    今天小編就為大家分享一篇使用Pandas的Series方法繪制圖像教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • python中賦值語(yǔ)句的特點(diǎn)和形式

    python中賦值語(yǔ)句的特點(diǎn)和形式

    這篇文章主要介紹了python中賦值語(yǔ)句的特點(diǎn)和形式,文中介紹了多目標(biāo)賦值的共享引用問(wèn)題,多目標(biāo)賦值其實(shí)是多個(gè)目標(biāo)對(duì)同一個(gè)內(nèi)存空間的引用,這里要分兩種情況,當(dāng)被引用對(duì)象是不可變對(duì)象時(shí)則不存在問(wèn)題,感興趣的朋友跟隨小編一起看看吧
    2023-12-12
  • Python實(shí)戰(zhàn)之自動(dòng)發(fā)送郵件的實(shí)現(xiàn)

    Python實(shí)戰(zhàn)之自動(dòng)發(fā)送郵件的實(shí)現(xiàn)

    自動(dòng)發(fā)送郵件能應(yīng)用于許多場(chǎng)景,下面本文就來(lái)和大家講講怎么用Python構(gòu)建一個(gè)自動(dòng)發(fā)送郵件的腳本。感興趣的小伙伴可以動(dòng)手嘗試一下
    2022-05-05
  • Python大批量搜索引擎圖像爬蟲(chóng)工具詳解

    Python大批量搜索引擎圖像爬蟲(chóng)工具詳解

    這篇文章主要介紹了Python大批量搜索引擎圖像爬蟲(chóng)工具,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評(píng)論