Методы передачи от вторичного GUI к основному GUI в python - PullRequest
0 голосов
/ 15 апреля 2020

Итак, у меня есть 2 GUI. Одним из них является основной gui, который имеет одну кнопку pu sh для активации второго gui. Второй gui - это простой калькулятор, который суммирует два числа, когда я нажимаю sh кнопку с внешней функцией. Второй gui (калькулятор) работает нормально, однако, когда я пытаюсь активировать второй gui из main, программа вылетает, поэтому я, вероятно, что-то делаю не так.

Также, если я изменю код 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 когда я нажимаю sh кнопку для суммирования чисел (кажется, что методы не передаются в экземпляр)

Я прилагаю код для лучшего понимания:

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_())

1 Ответ

0 голосов
/ 15 апреля 2020

заменить self.ex = SumCalc(self) на self.ex = SumCalc(), потому что функция конструктора (__init__) в SumCal c не принимает никаких аргументов (def __init__(self)) или просто добавляет родительский параметр в конструктор SumCal c, поэтому становится def __init__(self, parent=none)

...