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