婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Pyqt5將多個類組合在一個界面顯示的完整示例

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

熱門標簽:銀川電話機器人電話 萊蕪電信外呼系統 企業微信地圖標注 B52系統電梯外呼顯示E7 鶴壁手機自動外呼系統違法嗎 沈陽防封電銷電話卡 地圖標注多個 怎么辦理400客服電話 高德地圖標注收入咋樣

背景:

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

示例如下:

1、待組合的原始主界面,主要使用控件是QTabWidget ,將不同類中的布局顯示到相應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")
        # 創建Test類對象
        test = Test()
        # 創建一個臨時布局,用于存放從Test中獲取的布局及其邏輯
        lay = QtWidgets.QGridLayout()
        # 獲取Test類中的布局及其邏輯
        ''' 注意這里一定要用addWeidget方法,如果直接賦值布局的話self.tab.setLayout(test.layout()) 只能得到Test中的布局
            但在Test中寫的控件邏輯是不會被調用的,因為直接賦值你只獲取的是布局
        '''
        lay.addWidget(test)
        # 將臨時布局設定到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_())

最終效果:

 總結:

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

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

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

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

標簽:葫蘆島 三亞 呼倫貝爾 呼倫貝爾 銀川 安慶 湘西 烏魯木齊

巨人網絡通訊聲明:本文標題《Pyqt5將多個類組合在一個界面顯示的完整示例》,本文關鍵詞  Pyqt5,將,多個,類組,合在,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Pyqt5將多個類組合在一個界面顯示的完整示例》相關的同類信息!
  • 本頁收集關于Pyqt5將多個類組合在一個界面顯示的完整示例的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久99精品久久久久婷婷| 国产精品嫩草99a| 欧美日韩在线综合| 麻豆一区二区99久久久久| 人人精品人人爱| 在线亚洲一区观看| 日韩视频免费观看高清完整版| 中文字幕av一区二区三区| 三级不卡在线观看| 亚洲日本电影在线| 国内精品在线播放| 欧美日韩黄色一区二区| 日韩欧美综合一区| 久久欧美中文字幕| 国产一区在线精品| 欧美高清一级片在线| 一区二区成人在线| 92国产精品观看| 精品理论电影在线观看 | 国产呦萝稀缺另类资源| 欧美视频自拍偷拍| 亚洲一区二区在线视频| 日韩欧美精品三级| 国产精品一区一区| 一片黄亚洲嫩模| 精品精品欲导航| 色综合咪咪久久| 麻豆视频观看网址久久| 国产精品久线在线观看| 欧美日韩成人在线| 成人手机在线视频| 午夜精品久久一牛影视| 国产亚洲视频系列| 欧美高清你懂得| 99精品视频一区| 国产高清久久久| 日本一区中文字幕| 国产精品超碰97尤物18| 精品久久久久久久久久久久久久久| 成人小视频免费在线观看| 亚洲h动漫在线| 亚洲天堂av一区| 国产亚洲欧洲997久久综合 | 色婷婷久久一区二区三区麻豆| 亚欧色一区w666天堂| 亚洲欧洲99久久| 久久综合成人精品亚洲另类欧美| 欧美性极品少妇| 成人97人人超碰人人99| 国产一区二区在线视频| 日韩福利电影在线观看| 亚洲黄色免费网站| 中文字幕视频一区| 国产亚洲精品7777| 久久精品日韩一区二区三区| 日韩一区二区三区四区 | 亚洲精品美国一| 久久精品国产澳门| 夜夜揉揉日日人人青青一国产精品 | 欧美视频日韩视频| gogogo免费视频观看亚洲一| 精品国产伦一区二区三区观看方式 | 午夜视频一区二区三区| 国产精品夫妻自拍| 国产精品伦一区| 精品美女被调教视频大全网站| 欧美二区在线观看| 欧美美女喷水视频| 日本乱人伦aⅴ精品| 99精品偷自拍| 99精品视频一区二区| 色综合咪咪久久| 国产精品久久久久久久久搜平片| 久久精品男人的天堂| 精品国产露脸精彩对白| 精品国产乱码久久久久久久| 精品国产麻豆免费人成网站| 国产欧美日韩三级| 国产精品久久久久9999吃药| 久久亚洲免费视频| 国产视频一区二区三区在线观看| 中文字幕不卡一区| 亚洲欧洲另类国产综合| 一区二区三区四区视频精品免费| 亚洲女人小视频在线观看| 亚洲动漫第一页| 免费观看91视频大全| 国产精品欧美久久久久一区二区| 中文字幕高清不卡| 亚洲综合一区二区三区| 日韩精品五月天| 欧美中文字幕久久| 91久久香蕉国产日韩欧美9色| 欧美精品免费视频| 欧美刺激午夜性久久久久久久| 久久美女艺术照精彩视频福利播放| 精品理论电影在线| 亚洲视频狠狠干| 亚洲成人av福利| 豆国产96在线|亚洲| 色呦呦日韩精品| 欧美电影免费观看高清完整版在线| 欧美精品一区二区在线播放| 亚洲天堂久久久久久久| 亚洲成人久久影院| 国产精品一区二区三区99| 在线欧美小视频| 国产色一区二区| 五月综合激情日本mⅴ| 麻豆精品国产传媒mv男同| 91在线观看一区二区| 欧美精品粉嫩高潮一区二区| 国产精品人人做人人爽人人添| 亚洲综合色噜噜狠狠| 国产精品久久久99| 亚洲成av人片www| 波多野结衣的一区二区三区| 精品视频在线免费看| 久久嫩草精品久久久久| 一区二区三区四区在线免费观看| 国产剧情一区二区三区| 欧美亚洲综合色| 亚洲天堂a在线| 另类人妖一区二区av| 欧美三级一区二区| 亚洲免费观看视频| 黑人巨大精品欧美黑白配亚洲| 色悠久久久久综合欧美99| 久久综合色婷婷| 日韩成人免费在线| 在线视频观看一区| 2021久久国产精品不只是精品| 一区二区三区欧美久久| 成人精品视频一区二区三区| 国产亚洲欧美在线| 奇米四色…亚洲| 欧美一区二区三区免费观看视频| 综合电影一区二区三区 | 成人高清视频免费观看| 欧美成人性战久久| 美女mm1313爽爽久久久蜜臀| 欧美日韩免费在线视频| 亚洲激情自拍偷拍| 在线观看日韩电影| 亚洲精选视频免费看| 色香蕉成人二区免费| 亚洲欧洲综合另类| 91美女视频网站| 亚洲三级视频在线观看| 在线观看日韩毛片| 亚洲va天堂va国产va久| 精品视频一区二区不卡| 在线亚洲+欧美+日本专区| 亚洲精品高清在线| 欧美日韩另类一区| 日韩二区三区在线观看| 日韩一区二区三区电影| 日本不卡123| 国产清纯白嫩初高生在线观看91| 精油按摩中文字幕久久| 国产亚洲精品aa午夜观看| 国产成人精品综合在线观看| 蜜臀va亚洲va欧美va天堂| 日韩一区二区三区免费看 | 久久国产生活片100| 精品日韩99亚洲| 国产不卡在线播放| 亚洲欧美经典视频| 在线播放视频一区| 综合精品久久久| 欧美日韩三级视频| 激情偷乱视频一区二区三区| 久久久青草青青国产亚洲免观| av一本久道久久综合久久鬼色| 亚洲欧美一区二区三区极速播放| 欧美午夜不卡视频| 男女男精品网站| 国产精品视频一二| 欧美日韩精品一区二区三区四区| 国内不卡的二区三区中文字幕| 中文字幕va一区二区三区| 欧美日韩一区小说| 国产毛片一区二区| 亚洲电影激情视频网站| 久久精品欧美一区二区三区麻豆| 欧美日韩中文另类| 波多野结衣视频一区| 麻豆一区二区99久久久久| 亚洲欧美成aⅴ人在线观看| 欧美成人一区二区三区片免费| 色美美综合视频| 国产一区二区精品久久| 亚洲国产精品一区二区久久| 国产精品一区不卡| 奇米精品一区二区三区在线观看| 中文字幕成人在线观看| 久久中文字幕电影| 欧美精品久久99| 欧美色老头old∨ideo| 国产成人精品一区二区三区四区 |