将方法从辅助GUI传递到python中的主GUI

问题描述 投票:0回答:1

所以我有2个GUI。一个是主gui,它具有一个按钮来激活第二个gui。第二个gui是一个简单的计算器,可以将两个数字与外部函数求和。第二个gui(计算器)可以独立运行,但是当我尝试从主gui激活第二个gui时,程序崩溃了,所以我可能做错了。另外,如果我将main中的代码更改为此:

class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        QtWidgets.QMainWindow.__init__(self, parent)
        self.setupUi(self)
        self.SumCalcBtn.clicked.connect(self.OpenSecondWindow)

    def OpenSecondWindow(self):
        self.ex = SumCalculator(self)
        self.ex.show()

当我按下按钮求和时,它会运行,但在第二个gui中却不执行任何操作。

我附上代码以更好地理解:

Main.py

import sys
from calculators import summary
from PyQt5 import QtCore, QtGui, QtWidgets
from SummaryUI import Ui_SummaryUI
from SummaryMain import SumCalc
from MainWindow import Ui_MainWindow


class SumCalculator(SumCalc):
    def __init__(self, parent=None):
        QtWidgets.QMainWindow.__init__(self, parent)
        self.setupUi(self)


class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        QtWidgets.QMainWindow.__init__(self, parent)
        self.setupUi(self)
        self.SumCalcBtn.clicked.connect(self.OpenSecondWindow)

    def OpenSecondWindow(self):
        self.ex = SumCalc(self)
        self.ex.show()


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

SummaryMain.py

import sys
from calculators import summary
from PyQt5 import QtCore, QtGui, QtWidgets
from SummaryUI import Ui_SummaryUI


class SumCalc(QtWidgets.QMainWindow, Ui_SummaryUI):
    def __init__(self):
        QtWidgets.QMainWindow.__init__(self)
        Ui_SummaryUI.__init__(self)
        self.setupUi(self)
        self.CalculateSumBtn.clicked.connect(self.sum_function)

    def sum_function(self):
        number_a = int(self.FirstNumberInput.text())
        number_b = int(self.SecondNumberInput.text())
        sum = summary(number_a, number_b)
        self.SumResultsValue.setText(str(sum))


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = SumCalc()
    window.show()
    sys.exit(app.exec_())
python user-interface pycharm pyqt5
1个回答
0
投票

self.ex = SumCalc(self)替换为self.ex = SumCalc(),因为SumCalc的构造函数(__init__)函数不接受任何参数(def __init__(self))或突出显示将参数parent添加到SumCalc的构造函数中,使其变为def __init__(self, parent=none)

© www.soinside.com 2019 - 2024. All rights reserved.