Я не могу понять, почему функция 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()