首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PyQt:如何退出QDialog?

PyQt:如何退出QDialog?
EN

Stack Overflow用户
提问于 2010-08-23 12:11:19
回答 2查看 5.9K关注 0票数 0

我已经构建了一个QDialog小部件。我的问题是,我不能退出QDialog。如果我按下其中一个按钮,则QDialog仅设置为“隐藏”。下面是代码的一小部分。它是可执行的。我不知道我做错了什么。也许你们中的一个能告诉我。

代码语言:javascript
运行
复制
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()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-23 12:21:09

我对python一无所知,但它看起来对话框是你的应用程序的唯一窗口。您可能希望尝试使用form.show_()而不是form.exec_()来调用对话框。后者通常用于在父窗口上以模态方式显示对话框。

票数 2
EN

Stack Overflow用户

发布于 2010-08-23 12:23:16

要终止一个对话框,accept应该可以工作(至少如果你已经将你的对话框设置为模态的话,我相信exec_总是这样)。

通常的替代方法是reject;或者,您可以使用int参数调用done (这将成为exec_的结果),而不是其中之一或两者都有。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3544697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档