PySide2: нажатие кнопки вызывается дважды при использовании QDialog show () - PullRequest
0 голосов
/ 11 июля 2020

Я не могу понять, почему функция show_dialog (), связанная с QPushButton, вызывается дважды, когда отображается диалог TestDialog (). Если show () не вызывается, этого не происходит. Ниже приведен минимальный воспроизводимый пример. Спасибо.

from PySide2 import QtCore, QtGui, QtWidgets
import sys

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()

        self.mainwidget = QtWidgets.QWidget(self)
        self.mainwidget_gridlayout = QtWidgets.QGridLayout(self.mainwidget)
        self.setCentralWidget(QtWidgets.QWidget(self))
        self.centralWidget().setLayout(self.mainwidget_gridlayout)

        self.button = QtWidgets.QPushButton(self)
        self.mainwidget_gridlayout.addWidget(self.button)
        self.button.pressed.connect(self.show_dialog)

        self.dialog = None

    def show_dialog(self):
        print('why is this shown twice')
        self.dialog = TestDialog()


class TestDialog(QtWidgets.QDialog):
    def __init__(self):
        super(TestDialog, self).__init__()
        self.show()

def main():
    app = QtWidgets.QApplication(sys.argv)
    application = MainWindow()
    application.show()
    sys.exit(app.exec_())


if __name__ == "__main__":
    main()
...