我已经构建了一个QDialog小部件。我的问题是,我不能退出QDialog。如果我按下其中一个按钮,则QDialog仅设置为“隐藏”。下面是代码的一小部分。它是可执行的。我不知道我做错了什么。也许你们中的一个能告诉我。
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
class MyClass(QDialog):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
# init
# ------------------------------------------------
self.setMinimumWidth(600)
self.setWindowTitle("Select Dingsda")
self.layout = QVBoxLayout()
self.setLayout(self.layout)
self.layoutWidget = QWidget(self)
self.liste = []
# widgets and layouts
# ------------------------------------------------
tempLayout = QHBoxLayout()
self.cancelButton = QPushButton("Cancel")
self.connect(self.cancelButton, SIGNAL('clicked()'), self.cancel)
self.addSelectedButton = QPushButton("Add Selected")
self.connect(self.addSelectedButton, SIGNAL('clicked()'), self.addSelected)
tempLayout.addStretch()
tempLayout.addWidget(self.cancelButton)
tempLayout.addWidget(self.addSelectedButton)
self.layout.addLayout(tempLayout)
# test-data
# ------------------------------------------------
# methods
# ------------------------------------------------
def cancel(self):
self.close()
def addSelected(self):
self.liste = ["1", "2", "3", "4", "5"]
self.accept()
def exec_(self):
if QDialog.exec_(self) == QDialog.Accepted:
return self.liste
else:
return []
def test():
app = QApplication([""])
form = MyClass()
i = form.exec_()
print i
sys.exit(app.exec_())
#-------------------------------------------------------------------------------
# main
#-------------------------------------------------------------------------------
if __name__ == "__main__":
test()发布于 2010-08-23 12:21:09
我对python一无所知,但它看起来对话框是你的应用程序的唯一窗口。您可能希望尝试使用form.show_()而不是form.exec_()来调用对话框。后者通常用于在父窗口上以模态方式显示对话框。
发布于 2010-08-23 12:23:16
要终止一个对话框,accept应该可以工作(至少如果你已经将你的对话框设置为模态的话,我相信exec_总是这样)。
通常的替代方法是reject;或者,您可以使用int参数调用done (这将成为exec_的结果),而不是其中之一或两者都有。
https://stackoverflow.com/questions/3544697
复制相似问题