最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pyqt5將多個類組合在一個界面顯示的完整示例

 更新時間:2021年09月03日 14:51:06   作者:咻哈  
這篇文章主要給大家介紹了關(guān)于Pyqt5將多個類組合在一個界面顯示的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

背景:

當你做復雜程序的時候,一個python文件不可能寫完所有UI,所以我們需要分塊組合,在不同的類寫多個UI文件及其相應(yīng)的邏輯,然后再組合在一個UI界面中。

示例如下:

1、待組合的原始主界面,主要使用控件是QTabWidget ,將不同類中的布局顯示到相應(yīng)tab中

# -*- coding: utf-8 -*-
 
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication
 
class Ui_MainWindow(QtWidgets.QWidget):
    def __init__(self):
        super(Ui_MainWindow,self).__init__()
        self.setupUi()
 
    def setupUi(self):
        self.allLayoutV = QtWidgets.QVBoxLayout()
        self.allLayoutV.setContentsMargins(0, 0, 0, 0)
        self.allLayoutV.setObjectName("allLayoutV")
        self.tabWidget = QtWidgets.QTabWidget()
        self.tabWidget.setObjectName("tabWidget")
        self.tab = QtWidgets.QWidget()  
        self.tab.setObjectName("tab")
        self.tabWidget.addTab(self.tab, "")
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.tabWidget.addTab(self.tab_2, "")
        self.tab_3 = QtWidgets.QWidget()
        self.tab_3.setObjectName("tab_3")
        self.tabWidget.addTab(self.tab_3, "")
        self.allLayoutV.addWidget(self.tabWidget)
 
        self.retranslateUi()
        self.tabWidget.setCurrentIndex(0)
        self.setLayout(self.allLayoutV)
        self.show()
 
    def retranslateUi(self):
        _translate = QtCore.QCoreApplication.translate
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Tab 1"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "Tab 2"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("MainWindow", "Tab 3"))
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Ui_MainWindow()
    app.exit(app.exec_())

分界面1

class Test(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(Test, self).__init__(parent)
        # for testing
        lay = QtWidgets.QVBoxLayout(self)
        lay.addWidget(QtWidgets.QPushButton("Test"))

分界面2

class Train_Haar(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(Train_Haar, self).__init__(parent)
        # for testing
        lay = QtWidgets.QVBoxLayout(self)
        lay.addWidget(QtWidgets.QPushButton("Train_Haar"))

分界面3

class Train_HOG(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(Train_HOG, self).__init__(parent)
        # for testing
        lay = QtWidgets.QVBoxLayout(self)
        lay.addWidget(QtWidgets.QPushButton("Train_HOG"))

組合類最終代碼

# -*- coding: utf-8 -*-
 
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication
# 界面1
class Test(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(Test, self).__init__(parent)
        # for testing
        lay = QtWidgets.QVBoxLayout(self)
        lay.addWidget(QtWidgets.QPushButton("Test"))
 
# 界面2
class Train_Haar(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(Train_Haar, self).__init__(parent)
        # for testing
        lay = QtWidgets.QVBoxLayout(self)
        lay.addWidget(QtWidgets.QPushButton("Train_Haar"))
 
# 界面3
class Train_HOG(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(Train_HOG, self).__init__(parent)
        # for testing
        lay = QtWidgets.QVBoxLayout(self)
        lay.addWidget(QtWidgets.QPushButton("Train_HOG"))
 
class Ui_MainWindow(QtWidgets.QWidget):
    def __init__(self):
        super(Ui_MainWindow,self).__init__()
        self.setupUi()
 
    def setupUi(self):
        self.allLayoutV = QtWidgets.QVBoxLayout()
        self.allLayoutV.setContentsMargins(0, 0, 0, 0)
        self.allLayoutV.setObjectName("allLayoutV")
        self.tabWidget = QtWidgets.QTabWidget()
        self.tabWidget.setObjectName("tabWidget")
        
        # tab1 示例一
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        # 創(chuàng)建Test類對象
        test = Test()
        # 創(chuàng)建一個臨時布局,用于存放從Test中獲取的布局及其邏輯
        lay = QtWidgets.QGridLayout()
        # 獲取Test類中的布局及其邏輯
        ''' 注意這里一定要用addWeidget方法,如果直接賦值布局的話self.tab.setLayout(test.layout()) 只能得到Test中的布局
            但在Test中寫的控件邏輯是不會被調(diào)用的,因為直接賦值你只獲取的是布局
        '''
        lay.addWidget(test)
        # 將臨時布局設(shè)定到tab上
        self.tab.setLayout(lay)
        self.tabWidget.addTab(self.tab, "")
 
        # tab2 示例二
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        train_Haar = Train_Haar()
        lay = QtWidgets.QGridLayout()
        lay.addWidget(train_Haar)
        self.tab_2.setLayout(lay)
        self.tabWidget.addTab(self.tab_2, "")
        
        # tab3 示例三
        self.tab_3 = QtWidgets.QWidget()
        self.tab_3.setObjectName("tab_3")
        train_Hog = Train_HOG()
        lay = QtWidgets.QGridLayout()
        lay.addWidget(train_Hog)
        self.tab_3.setLayout(lay)
        self.tabWidget.addTab(self.tab_3, "")
        self.allLayoutV.addWidget(self.tabWidget)
 
        self.retranslateUi()
        self.tabWidget.setCurrentIndex(0)
        self.setLayout(self.allLayoutV)
        self.show()
 
    def retranslateUi(self):
        _translate = QtCore.QCoreApplication.translate
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Tab 1"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "Tab 2"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("MainWindow", "Tab 3"))
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Ui_MainWindow()
    app.exit(app.exec_())

最終效果:

 總結(jié):

這里我用QTabWidget,其實可以使用任何布局,關(guān)鍵代碼在于addWidget,所以你可以用QGridLayout等其他布局容器都行。

  # tab1
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        # 創(chuàng)建Test類對象
        test = Test()
        # 創(chuàng)建一個臨時布局,用于存放從Test中獲取的布局及其邏輯
        lay = QtWidgets.QGridLayout()
        # 獲取Test類中的布局及其邏輯
        ''' 注意這里一定要用addWeidget方法,如果直接賦值布局的話self.tab.setLayout(test.layout()) 只能得到Test中的布局
            但在Test中寫的控件邏輯是不會被調(diào)用的,因為直接賦值你只獲取的是布局
        '''
        lay.addWidget(test)
        # 將臨時布局設(shè)定到tab上
        self.tab.setLayout(lay)

參考:python - Compose a PyQt5 UI from multiple classes - Stack Overflow

到此這篇關(guān)于Pyqt5將多個類組合在一個界面顯示的文章就介紹到這了,更多相關(guān)Pyqt5多個類組合在界面顯示內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python中的隨機數(shù)種子seed()用法說明

    python中的隨機數(shù)種子seed()用法說明

    這篇文章主要介紹了python中的隨機數(shù)種子seed()用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Python求均值,方差,標準差的實例

    Python求均值,方差,標準差的實例

    今天小編就為大家分享一篇Python求均值,方差,標準差的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • python求解漢諾塔游戲

    python求解漢諾塔游戲

    這篇文章主要為大家詳細介紹了python求解漢諾塔游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • pytorch如何自定義數(shù)據(jù)集

    pytorch如何自定義數(shù)據(jù)集

    這篇文章主要介紹了pytorch自定義數(shù)據(jù)集,在識別手寫數(shù)字的例子中,數(shù)據(jù)集是直接下載的,但如果我們自己收集了一些數(shù)據(jù),存在電腦文件夾里,我們該如何把這些數(shù)據(jù)變?yōu)榭梢栽赑yTorch框架下進行神經(jīng)網(wǎng)絡(luò)訓練的數(shù)據(jù)集呢,即如何自定義數(shù)據(jù)集呢,需要的朋友可以參考下
    2024-01-01
  • python實現(xiàn)畫圖工具

    python實現(xiàn)畫圖工具

    這篇文章主要為大家詳細介紹了python實現(xiàn)畫圖工具,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • Python數(shù)據(jù)分析Matplotlib?柱狀圖繪制

    Python數(shù)據(jù)分析Matplotlib?柱狀圖繪制

    本文主要介紹了Python數(shù)據(jù)分析Matplotlib柱狀圖繪制,Matplotlib提供了bar()方法繪制柱狀圖,下面具體繪制介紹需要的小伙伴可以參考以一下
    2022-05-05
  • Pandas index操作索引的實現(xiàn)

    Pandas index操作索引的實現(xiàn)

    Pandas中的索引index用于選擇特定的行數(shù)和列數(shù),加快數(shù)據(jù)訪問速度,本文就來介紹一下index操作索引,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01
  • pytorch?dataset實戰(zhàn)案例之讀取數(shù)據(jù)集的代碼

    pytorch?dataset實戰(zhàn)案例之讀取數(shù)據(jù)集的代碼

    這篇文章主要介紹了pytorch?dataset實戰(zhàn)案例讀取數(shù)據(jù)集的相關(guān)知識,這段代碼可以作為讀取數(shù)據(jù)集的一個DataSet類的基礎(chǔ)類,可以擴充進行修改,以后有類似需要可以拿過來修改,本文結(jié)合實例代碼給大家詳細講解,需要的朋友可以參考下
    2022-10-10
  • python循環(huán)語句的使用方法

    python循環(huán)語句的使用方法

    這篇文章主要介紹了python循環(huán)語句的使用方法,文章主要介紹python循環(huán)相關(guān)內(nèi)容有?for循環(huán)語句、循環(huán)嵌套、break結(jié)束循環(huán)、continue跳過本次循環(huán)實現(xiàn)內(nèi)容,需要的小伙伴可以參考一下
    2022-04-04
  • 詳解Python中常用的圖片處理函數(shù)的使用

    詳解Python中常用的圖片處理函數(shù)的使用

    這篇文章主要為大家介紹了一些在Python中常用的圖片處理函數(shù)的使用,例如split()、merge()、threshold()、applyColorMap()等,需要的可以參考一下
    2022-01-01

最新評論

界首市| 保亭| 府谷县| 城口县| 颍上县| 芦山县| 酉阳| 淮安市| 台湾省| 德化县| 通城县| 天津市| 沈阳市| 利川市| 蒙阴县| 丰都县| 平乐县| 久治县| 潞城市| 沛县| 收藏| 东乌珠穆沁旗| 夏邑县| 敦煌市| 甘孜| 潮州市| 海晏县| 秦安县| 延川县| 裕民县| 苍山县| 安溪县| 长顺县| 德庆县| 渑池县| 东辽县| 裕民县| 安达市| 邯郸县| 萨迦县| 于都县|