2016-08-17 48 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

相关问题