1

私は 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)
        ...
4

2 に答える 2

0

ダイアログを呼び出しexec_()てみてください。これにより、ダイアログが表示されます。

于 2010-07-28T15:16:35.077 に答える