私は PyQt4 を使用して、単純な Python GUI アプリを作成しています。
状況は次のとおりです。
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 がクリックされたときに、このカスタム ダイアログ クラスを表示したいと考えています。
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)
...