国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python學(xué)習(xí)筆記——PySide6設(shè)計(jì)GUI應(yīng)用之UI與邏輯分離

這篇具有很好參考價(jià)值的文章主要介紹了Python學(xué)習(xí)筆記——PySide6設(shè)計(jì)GUI應(yīng)用之UI與邏輯分離。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1、打開(kāi)PySide6的UI設(shè)計(jì)工具pyside6-designer,設(shè)計(jì)一個(gè)主窗口,保存文件名為testwindow.ui

2、使用PySide6的RCC工具把testwindow.ui文件轉(zhuǎn)換為testwindow_rc.py文件,此文件中有一個(gè)類(lèi)Ui_MainWindow(包含各種控件對(duì)象)

一、通過(guò)類(lèi)繼承實(shí)現(xiàn):

# 導(dǎo)入標(biāo)準(zhǔn)庫(kù)sys
import sys
# 導(dǎo)入PySide6庫(kù)中的兩個(gè)類(lèi):QApplication, QMainWindow
from PySide6.QtWidgets import QApplication, QMainWindow
# 導(dǎo)入使用PySide6-Rcc工具轉(zhuǎn)換的UI設(shè)計(jì)窗口Ui_MainWindow類(lèi)
from testwindow_rc import Ui_MainWindow

# 應(yīng)用程序
class TestMainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(TestMainWindow, self).__init__()
        self.setupUi(self)

if  __name__ == '__main__':
    app = QApplication(sys.argv)
    win = TestMainWindow()
    win.show()
    sys.exit(app.exec())

class TestMainWindow(QMainWindow, Ui_MainWindow): 定義了一個(gè)新的類(lèi)TestMainWindow,它繼承自 QMainWindow(PySide6.QtWidget中的QtMainWindow類(lèi)) 和 Ui_MainWindow。

在這種多重繼承的情況下,QMainWindow 是 PySide6中提供的一個(gè)主窗口類(lèi),它包含了很多創(chuàng)建和管理主窗口的功能。而 Ui_MainWindow 是由 PySide6 Designer 生成的一個(gè)界面類(lèi),它包含了在設(shè)計(jì)器中設(shè)計(jì)的窗口界面及其上的所有元素和布局。

TestMainWindow 類(lèi)通過(guò)繼承這兩個(gè)類(lèi),同時(shí)獲得 QMainWindow 的窗口管理功能和 Ui_MainWindow 的界面元素。

調(diào)用執(zhí)行self.setupUi(self) :其實(shí)是調(diào)用Ui_MainWindow中的setupUi()方法,傳入實(shí)參self是TestMainWindow類(lèi)的實(shí)例對(duì)象,從而實(shí)現(xiàn)設(shè)計(jì)的窗口界面及其上元素(控件)的初始化完成布局。

通過(guò)上面的分離,以后修改Ui文件進(jìn)行界面元素添加和修改屬性等,然后轉(zhuǎn)化Ui文件,將不影響邏輯代碼。

另外,定義和設(shè)計(jì)方法來(lái)控制窗口及其上控件的行為,響應(yīng)用戶(hù)的操作等。要在TestMainWindow類(lèi)的 __init__(self) 及其它方法中完成,這樣不會(huì)因?yàn)樾薷膗i文件及轉(zhuǎn)化而被覆蓋。

super(TestMainWindow, self).__init__(),是 Python 中用于調(diào)用父類(lèi)構(gòu)造方法的一種寫(xiě)法。在這里,TestMainWindow 是子類(lèi),而 self 是子類(lèi)的實(shí)例。super() 函數(shù)是用來(lái)臨時(shí)改變當(dāng)前類(lèi)的父類(lèi),并返回一個(gè)父類(lèi)的實(shí)例。因此,super(TestMainWindow, self) 返回的就是 TestMainWindow 的父類(lèi)的一個(gè)實(shí)例,然后調(diào)用其 __init__() 方法,即初始化方法。

這樣做的目的是在子類(lèi)的 __init__() 方法中,首先執(zhí)行父類(lèi)的 __init__() 方法,以便能夠繼承父類(lèi)的屬性和方法。這是一種常見(jiàn)的在面向?qū)ο缶幊讨袑?shí)現(xiàn)繼承的方式。

在 Python 3 中,可以直接在子類(lèi)中使用 super().__init__(),Python 會(huì)自動(dòng)解析當(dāng)前類(lèi)和 self,不需要顯式地傳入。

二、關(guān)聯(lián)界面類(lèi)來(lái)實(shí)現(xiàn)

# 導(dǎo)入標(biāo)準(zhǔn)庫(kù)sys
import sys
# 導(dǎo)入PySide6庫(kù)中的兩個(gè)類(lèi):QApplication, QMainWindow
from PySide6.QtWidgets import QApplication, QMainWindow
# 導(dǎo)入使用PySide6-Rcc工具轉(zhuǎn)換的UI設(shè)計(jì)窗口Ui_MainWindow類(lèi)
from testwindow_rc import Ui_MainWindow

# 創(chuàng)建的類(lèi)繼承PySide6的主窗口類(lèi)QMainWindow
class TestMainWindow(QMainWindow):

    def __init__(self):
        # 執(zhí)行父類(lèi)QMainWindow的構(gòu)造函數(shù),從而讓子類(lèi)TestMainWindow的實(shí)例對(duì)象
        # 具有父類(lèi)的功能和屬性
        super().__init__()

        # 創(chuàng)建Ui界面類(lèi)實(shí)例,并賦值給TestMainWindow的實(shí)例對(duì)象屬性u(píng)i
        self.ui = Ui_MainWindow()
        
        # 調(diào)用TestMainWindow的實(shí)例對(duì)象屬性u(píng)i的setupUi()方法
        # 傳入實(shí)參self是TestMainWindow的實(shí)例對(duì)象,從而實(shí)現(xiàn)Ui界面元素的創(chuàng)建
        self.ui.setupUi(self)

if  __name__ == '__main__':
    app = QApplication(sys.argv)
    win = TestMainWindow()
    win.show()
    sys.exit(app.exec())

三、直接載入U(xiǎn)i文件

import sys
from PySide6.QtCore import QFile
from PySide6.QtUiTools import QUiLoader
# 導(dǎo)入PySide6庫(kù)中的兩個(gè)類(lèi):QApplication
from PySide6.QtWidgets import QApplication
class TestMainWindow:
    def __init__(self):
        super(TestMainWindow, self).__init__()
        # 從ui文件中加載UI定義
        qfile = QFile("testwindow.ui")
        qfile.open(QFile.ReadOnly)
        qfile.close()
        # 從UI定義中動(dòng)態(tài)創(chuàng)建一個(gè)相應(yīng)的窗口對(duì)象
        self.ui = QUiLoader().load(qfile)

        if not self.ui:
            print(QUiLoader().errorString())
            sys.exit(-1)

if  __name__ == '__main__':
    app = QApplication(sys.argv)
    win = TestMainWindow()
    win.ui.show()
    sys.exit(app.exec())

筆者建議使用第一種方法,通過(guò)繼承方式。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-853202.html

到了這里,關(guān)于Python學(xué)習(xí)筆記——PySide6設(shè)計(jì)GUI應(yīng)用之UI與邏輯分離的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • PySide6學(xué)習(xí)/教程/筆記(二):彈窗小頁(yè)面

    PySide6學(xué)習(xí)/教程/筆記(二):彈窗小頁(yè)面

    注:本文示例都是從官方文檔中找到的,有條件的可以去看一下。 首先,我們看一下,Qt應(yīng)用最簡(jiǎn)單的結(jié)構(gòu)是什么樣。 一行一行解釋。 前兩行是導(dǎo)入需要使用的包。這個(gè)后面再講。 app = QApplication(sys.argv) 這行代碼創(chuàng)建了一個(gè)QApplication類(lèi)的實(shí)例。首先什么是QApplication?回答這

    2024年02月02日
    瀏覽(29)
  • Pyside6/PyQT 項(xiàng)目實(shí)戰(zhàn),從0開(kāi)始寫(xiě)一個(gè)GUI可視化項(xiàng)目:總覽

    Pyside6/PyQT 項(xiàng)目實(shí)戰(zhàn),從0開(kāi)始寫(xiě)一個(gè)GUI可視化項(xiàng)目:總覽

    最近使用 Pyside6 編寫(xiě)了幾個(gè) GUI 工具,發(fā)現(xiàn)效果出奇的好。遂產(chǎn)生了分享它的念頭。 接下來(lái)如果不出意外,大概沒(méi)有意外,我會(huì)開(kāi)始寫(xiě) 這個(gè)專(zhuān)欄 ,介紹從零開(kāi)始去編寫(xiě)一個(gè)實(shí)用的 GUI 工具。 這是 Pyside6 第一篇:《總覽》 本文對(duì)Pyside6在開(kāi)發(fā)使用中進(jìn)行了知識(shí)點(diǎn)的提煉,所以后

    2023年04月22日
    瀏覽(20)
  • Pyside6:加載.ui

    通常來(lái)說(shuō)開(kāi)發(fā)Qt的界面基本都在Qt Designer中進(jìn)行的,它保存的文件為.ui,我們可以通過(guò)uic將其轉(zhuǎn)變?yōu)?py文件(如何使用:Pyside6:安裝及Pycharm配置_pyside6安裝pycharm-CSDN博客)。 那么該如何進(jìn)行加載呢?大致來(lái)說(shuō)有兩種方法: 這個(gè)非常簡(jiǎn)單,無(wú)需把.ui文件進(jìn)行轉(zhuǎn)換,但 loader.loa

    2024年02月03日
    瀏覽(23)
  • 【無(wú)標(biāo)題】PySide6在非UI線(xiàn)程更新UI界面實(shí)例

    ????????寫(xiě)一個(gè)SonThread類(lèi)繼承于QThread,直接在run函數(shù)中寫(xiě)我們要執(zhí)行的動(dòng)作(更新UI界面)。優(yōu)點(diǎn)比較簡(jiǎn)單易懂,缺點(diǎn)只能被一種事件使用,不能重復(fù)利用。 ????????使用threading來(lái)創(chuàng)建新線(xiàn)程,在新線(xiàn)程中使用SonThread來(lái)更新UI界面。只用寫(xiě)一個(gè)更新UI界面的類(lèi),可以被很多的

    2024年02月16日
    瀏覽(24)
  • PySide6 將.ui文件編譯為.py文件

    PySide6 將.ui文件編譯為.py文件

    1. 制作UI 平時(shí)使用QT creator設(shè)計(jì)器設(shè)計(jì)UI,然后可將其轉(zhuǎn)化成 .py 文件,以供 .py 腳本使用。 2.Pyside6 轉(zhuǎn)換ui為 .py 文件 pyside6使用過(guò)程: 生成的py文件: 3. .py 文件國(guó)際化 通過(guò)pyside6-uic生成的 .py 代碼中,中文或文本將使用unicode表示,即:“機(jī)器人設(shè)置”(u\\\"u673au5668u4ebau8bbeu

    2024年02月12日
    瀏覽(36)
  • Pyside6入門(mén)教學(xué)——編寫(xiě)一個(gè)UI界面并顯示

    Pyside6入門(mén)教學(xué)——編寫(xiě)一個(gè)UI界面并顯示

    1、安裝Pyside6 輸入下列命令安裝Pyside6。 2、設(shè)計(jì)UI 打開(kāi)Qt設(shè)計(jì)工具(在安裝Pyside6包的目錄下)。 【注】我這用的是anaconda虛擬環(huán)境,所以我的路徑是D:AppAnaconda3envssnakeLibsite-packagesPySide6。 設(shè)計(jì)一個(gè)界面,如何設(shè)計(jì)這里不詳細(xì)講解。 設(shè)計(jì)完后保存,得到一個(gè)ui文件。(另存

    2024年01月20日
    瀏覽(39)
  • 使用pyside6將ui文件轉(zhuǎn)換為py

    使用pyside6將ui文件轉(zhuǎn)換為py

    在MainWindow.ui文件所在文件夾搜索欄輸入cmd,點(diǎn)擊回車(chē)鍵; 示意圖如下: 直接輸入下述代碼: 示意圖如下:

    2024年04月23日
    瀏覽(24)
  • PySide6:Qt Designer UI文件的兩種使用方式

    通過(guò)Qt Designer(PyQt6與PySide6對(duì)應(yīng)的Designer設(shè)計(jì)的界面生成的UI文件有區(qū)別)設(shè)計(jì)的界面會(huì)生成對(duì)應(yīng)的UI文件,一般會(huì)使用PyUIC工具將UI文件轉(zhuǎn)換為對(duì)應(yīng)的Py文件來(lái)使用,后面每次界面發(fā)生更新時(shí)都要重新轉(zhuǎn)換一次,比較麻煩;另外,如果直接在UI文件中添加自己的代碼,如信號(hào)與槽

    2024年02月11日
    瀏覽(26)
  • Pyside6(3): 自動(dòng)生成UI的Qt參數(shù)輸入對(duì)話(huà)框

    Pyside6(3): 自動(dòng)生成UI的Qt參數(shù)輸入對(duì)話(huà)框

    參數(shù)輸入界面是桌面軟件開(kāi)發(fā)最繁瑣的部分之一。特別是當(dāng)系統(tǒng)中存在多種可編輯的數(shù)值模型時(shí),由于各個(gè)模型的字段不同,每個(gè)字段的輸入類(lèi)型也不同,需要制作不同的UI,使用不同的UI控件,無(wú)疑會(huì)耗費(fèi)大量時(shí)間,同時(shí)拓展性也非常差,因?yàn)槊吭黾右粋€(gè)數(shù)值模型,都需要制

    2024年02月03日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包