Je travaille avec PyQt4 pour créer une simple application graphique Python.PyQt4 Boîte de dialogue personnalisée ne montrant pas
La situation est la suivante:
j'ai un QMainWindow
afficher un widget central et d'un QDockWidget contenant ce Widget personnalisé:
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()
Je veux basiquement pour afficher cette classe de dialogue personnalisée lorsque addButton est cliqué :
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...")
Mais cela ne fonctionne pas. J'ai réussi à créer une ligne de dialogue en changeant la méthode addtag à:
def addTag(self):
dialog = QDialog()
dialog.show()
Mais je ne suis pas satisfait de la création de dialogue en ligne. Quelle est mon erreur? Je vous remercie.
EDIT
Le problème était avec le constructeur de la classe de dialogue personnalisée:
class AddTagDlg(QDialog):
def __init__(self, Parent=None):
super(AddTagDlg, self).__init__(parent) #<--WAS MISSING
buttonBox = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel)
...
Merci! J'ai trouvé qu'il était également nécessaire de passer super (AddTagDlg, self) .__ init __ (parent) dans la classe de dialogue personnalisé. Je vais éditer ma question. –