PyQt5对话框关闭主风

2024-05-19 16:35:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将PyQT4代码转换为PyQt5,这需要新的连接信号样式。 当我使用:

self.connect(okButton, SIGNAL("clicked()"),form, SLOT("accept()"))
self.connect(cancelButton, SIGNAL("clicked()"),form, SLOT("reject()"))

一切正常-单击“确定”或“取消”,对话框窗口将关闭。用一个新的sygnals(我猜我做错了什么)

^{pr2}$

单击“确定/取消”后,主窗口将关闭,对话框将保留。这绝对不是应该发生的事。在

我做错什么了?在

import sys
from PyQt5.QtWidgets import QDialog, QApplication, QPushButton, QLabel, QHBoxLayout, QVBoxLayout, QGridLayout
# from PyQt4.QtCore import *
# from PyQt4.QtGui import *

class Form(QDialog):
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)
        myButton = QPushButton("open window")
        self.myFirstLabel = QLabel("First Window")
        layout = QVBoxLayout()
        layout.addWidget(myButton)
        layout.addWidget(self.myFirstLabel)
        self.setLayout(layout)
        myButton.clicked.connect(self.openNewWindow)
        self.setWindowTitle("SecondWindowTest")

    def openNewWindow(self):
        myLabel = QLabel("Second Window")
        okButton = QPushButton("&OK")
        cancelButton = QPushButton("Cancel")
        buttonLayout = QHBoxLayout()
        buttonLayout.addStretch()
        buttonLayout.addWidget(okButton)
        buttonLayout.addWidget(cancelButton)
        layout = QGridLayout()
        layout.addWidget(myLabel, 0, 0)
        layout.addLayout(buttonLayout, 1, 1, 1, 2)
        form = QDialog()
        form.setLayout(layout)

        okButton.clicked.connect(self.accept)
        cancelButton.clicked.connect(self.reject)
        # self.connect(okButton, SIGNAL("clicked()"),form, SLOT("accept()"))
        # self.connect(cancelButton, SIGNAL("clicked()"),form, SLOT("reject()"))

        form.setWindowTitle("Second Window")
        if form.exec_():
            self.myFirstLabel.setText('OK was pressed')

app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()

Tags: importselfformsignalconnectslotlayoutaccept
1条回答
网友
1楼 · 发布于 2024-05-19 16:35:38

相当于以下连接:

self.connect(okButton, SIGNAL("clicked()"),form, SLOT("accept()"))
self.connect(cancelButton, SIGNAL("clicked()"),form, SLOT("reject()"))

新的连接方式是:

^{pr2}$

相关问题 更多 >