好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 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將多個類組合在一個界面顯示的完整示例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 太粗太长太硬受不了了| 亚洲男人的天堂久久香蕉网 | 日韩精品国产丝袜| 美女脱一光二净照片| 三级网站国产| 亚洲午夜一级毛片| 18以上岁毛片在线播放| 一级无码啪啪片天天躁| 青草娱乐极品免费视频| 福利一区二区在线| 少妇婬乱全黄毛片久久久老牛 | 综合久久久久6亚洲综合| 91一区二区午夜免费福利网站| 校园漫画无删减无遮羞漫画免费阅读 | 国产亚洲精品成人久久网站| 情欲情欲欲超市全文无删减| 公公舔我逼| 午夜婬妇一级A片久久爱| 《性的暴行2》未删减版| 色戒HD未删减版在线爱爱电影| 色婷婷国产| 日本少妇喷潮XXⅩ69| 久久久国产调教sm网站色大师| 饥渴的女人好久没做了| k大尺度经典电影| 上课被同桌摸下面做羞羞| 九色精品高清在线播放| 日本三级理论大全在线观看 | 欧美a级在线| 国产精品亚洲AV三区ai戴眼镜| 他疯狂的吸着她奶水| 肥臀系列肥臀肉磨盘系列小说| 在被子里捏r头| 久久六月丁香婷婷婷| 黄色污污小说| 亚洲AV无码久久流水呻吟| 喜爱夜蒲3尺度吸乳| 性猛交乱婬A片无码久久久影院 | 久久久久久久久久久午夜福利电影 | 久久中文字幕人妻熟av女蜜柚M | 总受np快穿H纯肉各种play|