PyQt4 自定义对话框不显示
我正在用PyQt4制作一个简单的Python图形界面应用。
情况是这样的:
我有一个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)
...
2 个回答
-2
如果代码的名字是flask,它会在里面进行搜索。所以把代码的名字改一下,不要用flask,然后再试试。
0
试着在对话框上调用 exec_()
,这样应该就能显示出对话框了。