如何关闭 QDialog

C S*_*der 7 python user-interface qt pyqt qdialog

我一直在尝试关闭从主窗口分支出来的 QDialog 窗口。到目前为止,以下内容对我不起作用:

self.close()
QDialog.close()
Run Code Online (Sandbox Code Playgroud)

我尝试了其他命令,例如exitexec_()没有运气。我得到的最常见的错误是

[className] 对象没有属性“关闭”

# Creating our window
class Ui_MainWindow(object):

    # Sets up GUI
    def setupUi(self, MainWindow):

        [GUI CODE]      

    # Sets text for parts of GUI
    def retranslateUi(self, MainWindow):

        [MORE GUI CODE]

    # Function handling screencap on click and metadata for filenames
    def cap_on_Click(arg1,arg2):

        popup = QDialog()
        popup_ui = Ui_Dialog()
        popup_ui.setupUi(popup)
        popup.show()
        sys.exit(popup.exec_())
Run Code Online (Sandbox Code Playgroud)

上面是我的主窗口

class Ui_Dialog(object):

    def setupUi(self, Dialog):

        [GUI CODE]

    def retranslateUi(self, Dialog):

        [MORE GUI CODE]

    def button_click(self, arg1):

        self.close()
Run Code Online (Sandbox Code Playgroud)

第二个块是对话窗口代码。如何关闭此对话窗口?

For*_*Bru 6

首先,抱歉与 C++ 相关的链接,但Python 具有相同的概念

您可以尝试使用rejectoracceptdone函数关闭对话框。通过这样做,您可以适当地设置返回值(RejectedAccepted或者您指定为参数的值)。

总而言之,您应该尝试调用YourDialog.done(n)关闭对话框并返回nYourDialog.accept()或者YourDialog.reject()当您希望它被接受/拒绝时。

  • @CSnyder,您是否尝试过调用“self.done()”或类似的方法? (2认同)