PyQt4自定义对话框未显示

问题描述 投票:1回答:2

我正在使用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()

我基本上想要在单击添加按钮时显示此自定义对话框类:

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)
        ...
python pyqt4 signals-slots qdockwidget
2个回答
0
投票

尝试在对话框中调用exec_(),这应该显示对话框。


-2
投票

如果代码的名称是flask,它将在其中搜索。因此,请更改烧瓶中代码的名称,然后重试。

© www.soinside.com 2019 - 2024. All rights reserved.