在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() 然后他们绑定的同一个槽函数,一起关了