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