2016-08-17 50 views
0

我想用三個選項卡使用PyQt創建一個對話框。但是,我很煩惱,因爲雖然顯示對話框,但嵌入的小部件不顯示!我想這是一個非常簡單的問題,相應地有一個非常簡單的解決方案,但我很震驚!任何人都可以提供一個提示嗎?提前致謝!PyQt - 選項卡式對話框不顯示嵌入式小部件

這裏是我到目前爲止的代碼:

import sys 
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 

class TabbedDialog(QDialog): 
    def __init__(self, parent = None): 
     super(TabbedDialog, self).__init__(parent) 

     self.tabWidget = QTabWidget() 
     self.tabWidget.tab1 = QWidget() 
     self.tabWidget.tab2 = QWidget() 
     self.tabWidget.tab3 = QWidget() 

     self.tabWidget.addTab(self.tabWidget.tab1,"Tab 1") 
     self.tabWidget.addTab(self.tabWidget.tab2,"Tab 2") 
     self.tabWidget.addTab(self.tabWidget.tab3,"Tab 3") 
     self.tab1UI() 
     self.tab2UI() 
     self.tab3UI() 
     self.setWindowTitle("tab demo") 

    def tab1UI(self): 
     layout = QFormLayout() 
     layout.addRow("Name",QLineEdit()) 
     layout.addRow("Address",QLineEdit()) 
     self.tabWidget.setTabText(0,"Contact Details") 
     self.tabWidget.tab1.setLayout(layout) 

    def tab2UI(self): 
     layout = QFormLayout() 
     sex = QHBoxLayout() 
     sex.addWidget(QRadioButton("Male")) 
     sex.addWidget(QRadioButton("Female")) 
     layout.addRow(QLabel("Sex"),sex) 
     layout.addRow("Date of Birth",QLineEdit()) 
     self.tabWidget.setTabText(1,"Personal Details") 
     self.tabWidget.tab2.setLayout(layout) 

    def tab3UI(self): 
     layout = QHBoxLayout() 
     layout.addWidget(QLabel("subjects")) 
     layout.addWidget(QCheckBox("Physics")) 
     layout.addWidget(QCheckBox("Maths")) 
     self.tabWidget.setTabText(2,"Education Details") 
     self.tabWidget.tab3.setLayout(layout) 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    form = TabbedDialog() 
    retval = form.exec_() 

回答

1

這裏是我的解決問題的辦法

初始化方法,我宣佈一個佈局,然後添加「tabWidget」窗口小部件到佈局並將該佈局設置爲QDialog的佈局。

def __init__(self, parent = None): 
    super(TabbedDialog, self).__init__(parent) 

    self.tabWidget = QTabWidget() 
    self.tabWidget.tab1 = QWidget() 
    self.tabWidget.tab2 = QWidget() 
    self.tabWidget.tab3 = QWidget() 

    self.tabWidget.addTab(self.tabWidget.tab1,"Tab 1") 
    self.tabWidget.addTab(self.tabWidget.tab2,"Tab 2") 
    self.tabWidget.addTab(self.tabWidget.tab3,"Tab 3") 
    self.tab1UI() 
    self.tab2UI() 
    self.tab3UI() 
    self.setWindowTitle("tab demo") 

    # Here is the addition to the code. 
    mainLayout = QVBoxLayout() 
    mainLayout.addWidget(self.tabWidget) 
    self.setLayout(mainLayout) 
+0

謝謝,它工作完美! – maurobio

+0

歡迎您... – syncster31

相關問題