2010-07-28 6 views
0

저는 PyQt4를 사용하여 간단한 Python GUI 응용 프로그램을 만들고 있습니다.PyQt4 사용자 지정 대화 상자가 표시되지 않습니다.

상황은 다음

내가 QMainWindow 중앙 위젯을 표시하고 QDockWidget이 사용자 정의 위젯을 포함하는이 :

class ListTagWidget(QWidget): 
     def __init__(self, parent = None): 
      super(ListTagWidget, self).__init__() 
      addButton = QPushButton("&Add Tag...") 
      editButton = QPushButton("&Edit Tag...") 
      removeButton = QPushButton("&Delete Tag") 
      self.taglist = QListWidget() 
      layout = QGridLayout(self) 
      layout.addWidget(self.taglist, 1, 1, 1, 1) 
      layout.addWidget(addButton, 2, 1) 
      layout.addWidget(editButton, 3, 1) 
      layout.addWidget(removeButton, 4, 1) 
      self.setLayout(layout) 
      self.adjustSize() 
      #Connections 
      self.connect(addButton, SIGNAL("clicked()"), self.addTag) 

     def addTag(self): 
      dialog = AddTagDlg(self) 
      dialog.show() 
addButton을 클릭하면 내가 basicly이 사용자 정의 대화 상자 클래스를 표시 할

:

class AddTagDlg(QDialog): 
    def __init__(self, Parent=None): 
     super(AddTagDlg, self).__init__() 
     buttonBox = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel) 
     label = QLabel("Tag Name:") 
     lineEdit = QLineEdit() 
     layout = QGridLayout() 
     layout.addWidget(label, 1, 1) 
     layout.addWidget(lineEdit, 1, 2) 
     layout.addWidget(buttonBox, 2, 1) 
     self.setLayout(layout) 
     self.setWindowTitle("Add Tag...") 

하지만 이것은 작동하지 않습니다. addTag 메서드를 변경하여 대화 상자를 인라인으로 만들었습니다.

def addTag(self): 
    dialog = QDialog() 
    dialog.show() 

인라인 대화 상자 생성에 만족하지 않습니다. 내 오류가 뭐니? 고맙습니다.

문제

편집은 사용자 정의 대화 상자 클래스 생성자로했다 :

class AddTagDlg(QDialog): 
    def __init__(self, Parent=None): 
     super(AddTagDlg, self).__init__(parent) #<--WAS MISSING 
     buttonBox = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel) 
     ... 

답변

0

대화에 exec_()를 호출하려고이 당신에게 대화 상자를 표시해야합니다.

+0

감사! 나는 super (AddTagDlg, self) .__ init __ (parent)를 커스텀 대화 상자 클래스에 전달하는 것이 필요하다는 것을 발견했다. 내 질문을 수정하겠습니다. –