在pyqt5上主界面加了一个按键pushbutton转子界面?

在pyqt5上主界面加了一个按键pushbutton转子界面,但是运行后出现了两个界面且点击换算出现了一下就闪退了?

主界面

 from PyQt5 import QtWidgets
from PyQt5.QtGui import QIcon, QColor
import ctypes
from ui_Login import Ui_MainWindow
from transfer import transfer
from postfix_evaluation import postfix_evaluation
from PyQt5.QtWidgets import QApplication
import sys
class CalculatorWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    # static变量
    original_expression = ""  # 存放需要计算的原始表达式
    history_expression = ""  # 存放历史记录表达式及结果
    dot_num = 0  # 记录有几个小数点
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.setWindowTitle('计算')  # 设置窗口标题
        self.setWindowIcon(QIcon('1.jpg'))  # 设置窗口图标
        self.setStyleSheet('QWidget{background-color:%s}' % QColor(222, 222, 222).name())  # 设置窗口背景色
        self.setWindowOpacity(0.85)  # 设置整个计算器窗口的透明度
        ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID("myappid")  # 任务栏图标
        self.show()

……

self.pushButton.clicked.connect(self.open)

    self.pushButton.clicked.connect(self.close_window)

def open(self):

    import test # 调用tiaozhuan.py

    self = test.Ui_MainWindow() # 实例化tiaozhuan.py中的Ui_MainWindow类

    self.show() # show()方法显示窗口

def close_window(self):

    self.close() # 关闭的时候要用窗口的实例化对象来关闭,不能用self

……

if __name__ == '__main__':

    # application 对象

    app = QApplication(sys.argv)

    main = CalculatorWindow()

    calculator = CalculatorWindow()

    sys.exit(app.exec_())

 

子界面

import sys

from PyQt5 import QtWidgets

# 我们需要使用 QtCore 模块中的 QCoreApplication 对象来实现退出

from PyQt5.QtCore import QCoreApplication

# 引入t1.py UI类

from PyQt5.QtWidgets import QMainWindow

from ui_test import Ui_MainWindow

class Ui_MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):

    def __init__(self):

        super().__init__()

        self.setupUi(self)

        self.setObjectName("MainWindow")

        # 执行计算

        self.calc_tax_button.clicked.connect(self.CalculateTax)

        # 执行退出

        self.exit_button.clicked.connect(QCoreApplication.instance().quit)

    # 执行计算方法

    def CalculateTax(self):

        price = int(self.price.text())

        tax = (self.tax_rate.value())

        total_price = price + ((tax / 100) * price)

        total_price_string = str(total_price)

        self.results_window.setText(total_price_string)

if __name__ == '__main__':

    # application 对象

    app = QtWidgets.QApplication(sys.argv)

    calculator = Ui_MainWindow()

    calculator.show()

    sys.exit(app.exec_())

这里产生了两个界面 main = CalculatorWindow() calculator = CalculatorWindow() 然后他们绑定的同一个槽函数,一起关了