亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 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將多個類組合在一個界面顯示的完整示例的相關信息資訊供網民參考!
  • 推薦文章
    国产麻豆精品hdvideoss| 色综合久久天天综合绕观看| 免费一级片在线| 一级女性全黄久久生活片| 国产成人精品影视| 色综合久久天天综线观看| 韩国三级香港三级日本三级la | 亚洲第一页色| 韩国三级视频网站| 成人在激情在线视频| 一级毛片视频免费| 美国一区二区三区| 国产视频一区二区在线观看| 欧美另类videosbestsex高清| 一级毛片视频播放| 一级片免费在线观看视频| 日本特黄特色aaa大片免费| 国产视频一区二区在线观看| 91麻豆精品国产综合久久久| 国产一区二区精品| 国产网站在线| a级毛片免费全部播放| 欧美1区2区3区| 国产a视频精品免费观看| 成人免费观看的视频黄页| a级精品九九九大片免费看| 欧美一级视频高清片| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产成人精品综合在线| 成人免费观看视频| 二级片在线观看| 青青久久网| 国产精品1024永久免费视频| 欧美大片毛片aaa免费看| 四虎影视库| 欧美激情一区二区三区在线| 午夜激情视频在线观看| 欧美激情在线精品video| 久久国产精品自线拍免费| 九九干| 国产麻豆精品视频| 国产网站免费观看| 四虎影视久久久免费| 午夜在线影院| 韩国毛片| 尤物视频网站在线观看| 亚洲精品永久一区| 青青久久网| 黄色免费三级| a级毛片免费全部播放| 国产a视频| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 精品视频免费在线| 国产视频一区二区在线观看| 久久国产精品自线拍免费| 国产高清在线精品一区a| 在线观看成人网| 国产伦久视频免费观看 视频| 日韩在线观看免费| 黄视频网站免费看| 国产a视频精品免费观看| 国产精品1024永久免费视频| 可以免费看毛片的网站| 国产精品自拍在线观看| 一a一级片| 香蕉视频久久| 国产a毛片| 国产a视频| 亚欧成人乱码一区二区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 人人干人人插| 欧美另类videosbestsex高清| 九九久久99| 成人免费网站久久久| 99色视频在线观看| 国产成人精品一区二区视频| 一 级 黄 中国色 片| 一级女性大黄生活片免费| 国产极品精频在线观看| 精品视频在线观看一区二区三区| 国产极品白嫩美女在线观看看| 毛片的网站| 欧美激情一区二区三区在线播放| 91麻豆精品国产自产在线| 欧美1区| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 黄视频网站在线观看| 国产一区二区精品尤物| 久久成人综合网| 国产精品123| 欧美爱色| 精品视频在线看 | 日日爽天天| 国产成人精品综合| 久草免费在线色站| 日韩在线观看网站| 日韩在线观看免费| 国产网站免费| 国产一级强片在线观看| 精品视频在线观看免费| 国产一区二区精品久久91| 日韩一级黄色大片| 成人高清视频在线观看| 日本特黄特黄aaaaa大片| 一级女人毛片人一女人| 天天做人人爱夜夜爽2020毛片| 精品视频在线观看一区二区| 国产成人精品综合| 国产精品1024在线永久免费| 高清一级淫片a级中文字幕| 国产激情一区二区三区| 久久99爰这里有精品国产| 韩国毛片免费| 亚欧成人乱码一区二区| 国产视频一区在线| 欧美一区二区三区性| 亚洲第一色在线| 国产视频在线免费观看| 美女免费精品视频在线观看| 日韩字幕在线| 日日日夜夜操| 国产福利免费观看| 精品国产三级a| 国产网站免费观看| 欧美激情伊人| 日韩中文字幕在线播放| 欧美a级大片| 精品国产一区二区三区久| 色综合久久久久综合体桃花网| 午夜在线影院| 午夜久久网| 国产一区精品| 尤物视频网站在线观看| 欧美另类videosbestsex久久 | 午夜激情视频在线播放| 成人a大片在线观看| 精品国产香蕉在线播出| 国产不卡精品一区二区三区| 999久久66久6只有精品| 精品久久久久久中文字幕一区| 欧美另类videosbestsex久久| 精品视频免费在线| 日韩中文字幕在线播放| 高清一级淫片a级中文字幕| 日韩免费在线视频| 99色视频在线| 四虎影视库| 日韩综合| 二级片在线观看| 欧美激情影院| 一级毛片视频播放| 成人免费高清视频| 日本在线不卡视频| 999久久久免费精品国产牛牛| 久久福利影视| 日韩在线观看视频免费| 黄视频网站在线观看| 成人影视在线观看| 欧美大片一区| 99色视频在线观看| 国产成+人+综合+亚洲不卡| 久草免费在线色站| 91麻豆精品国产自产在线观看一区| 免费毛片播放| 九九热国产视频| 欧美1区2区3区| 日本在线www| 精品视频在线看| 日本在线www| 国产成+人+综合+亚洲不卡| 日韩字幕在线| 亚欧成人乱码一区二区| 四虎影视库| 可以免费看污视频的网站| 国产91素人搭讪系列天堂| 日韩中文字幕在线播放| 你懂的国产精品| 精品国产一区二区三区免费 | 韩国毛片免费大片| 欧美电影免费看大全| 欧美激情一区二区三区视频高清 | 999精品视频在线| 欧美α片无限看在线观看免费| 日韩免费在线视频| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 日韩字幕在线| 国产视频一区二区在线播放| 国产亚洲精品成人a在线| 亚洲不卡一区二区三区在线| 黄视频网站免费看| 国产伦久视频免费观看 视频| 九九精品久久久久久久久| 麻豆午夜视频| 国产a毛片| 精品久久久久久免费影院| 可以在线看黄的网站| 免费国产在线观看不卡| 精品久久久久久中文| 欧美大片一区| 国产伦久视频免费观看视频|