python - PyQt5,将变量列表传递给另一个类
问题描述
该程序有 2 个窗口,一个是主窗口,另一个是结果窗口。我想将在 getValue() 函数中获得值的数据传递给另一个类,即结果窗口。
#### THIS PARAMETERS SHOULD PASS TO THE BILLETCALCULATIONRESULTS WINDOW TO CALCULATE ###
def GetValues(self):
self.Diameter = float(self.DiameterQline.text())
self.Height = float(self.HeightQline.text())
self.StartTemp = float(self.StartTempQline.text())
self.FinalTemp = float(self.FinalTempQline.text())
self.HeatingTime = float(self.HeatingTimeQline.text())
我想在另一个窗口中进行计算并将结果打印到屏幕上。像
class BilletCalculationResults(QWidget):
def calc():
return str(Main.diameter * 2 )
def billetCalculationPageDesign(self):
### BILLET RESULTS OF CALCULATION PAGE DESIGN ###
self.billetCalSurfaceAreaLabel = QLabel("Surface Area : ")
self.billetCalSurfaceAreaLabel.setStyleSheet('font-size: 12pt; font-family: arial,sans-serif')
str = self.calc()
self.billetCalSurfaceAreaLabelResult = QLabel(str)
您可以在下面找到所有代码。谢谢
from PyQt5.QtWidgets import *
from PyQt5 import QtCore
import sys
import math
from PyQt5.QtGui import QPixmap,QFont
import sqlite3
class Main(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Calculation")
self.setGeometry(450,100,1250,600)
self.UI()
self.show()
def UI(self):
self.mainDesign()
self.layouts()
def mainDesign(self):
self.setStyleSheet('background-color:white')
#CUSTOMER INFORMATION BUTTONS AND TEXT###
#### CALCULATE BUTTONS###
self.buttonCalcBillet = QPushButton("Calculate")
self.buttonCalcBillet.setStyleSheet(
'background-color: orange;'
'color: black;'
)
### CALCULATE BUTTONS CLICKED ###
self.buttonCalcBillet.clicked.connect(self.billetCalculationResults)
######
self.Title = QLabel("Some Maths")
self.Title.setAlignment(QtCore.Qt.AlignHCenter)
self.Title.setStyleSheet('font-size: 18pt; font-family: arial,sans-serif')
self.DiameterLabel = QLabel("Diameter")
self.DiameterLabel.setStyleSheet('font-size: 12pt; font-family: arial,sans-serif')
self.DiameterQline = QLineEdit()
self.DiameterQline.setPlaceholderText("Please Enter Diameter in mm")
self.DiameterQline.setStyleSheet(
'font-family:Hack,monospace;'
'font:12px;'
'mind-width:20em;'
)
self.HeightLabel = QLabel("Height")
self.HeightLabel.setStyleSheet('font-size: 12pt; font-family: arial,sans-serif')
self.HeightQline = QLineEdit()
self.HeightQline.setPlaceholderText("Please Enter Height in mm")
self.StartTempLabel = QLabel("Start Temperature")
self.StartTempLabel.setStyleSheet('font-size: 12pt; font-family: arial,sans-serif')
self.StartTempQline = QLineEdit()
self.StartTempQline.setPlaceholderText("Please Enter Start Temperature in Celsius")
self.FinalTempLabel = QLabel("Final Temperature")
self.FinalTempLabel.setStyleSheet('font-size: 12pt; font-family: arial,sans-serif')
self.FinalTempQline = QLineEdit()
self.FinalTempQline.setPlaceholderText("Please Enter Final Temperature in Celsius")
self.HeatingTimeLabel = QLabel("Heating Time")
self.HeatingTimeLabel.setStyleSheet('font-size: 12pt; font-family: arial,sans-serif')
self.HeatingTimeQline = QLineEdit()
self.HeatingTimeQline.setPlaceholderText("Please Enter Heating Time in Secs")
def layouts(self):
#####LAYOUTS#########
self.mainLayout = QHBoxLayout()
self.billetLayout = QFormLayout()
self.slabLayout = QFormLayout()
self.hollowLayout = QFormLayout()
###ADDING CHILD LAYOUTS TO MAIN LAYOUTS######
self.mainLayout.addLayout(self.billetLayout,350)
self.mainLayout.addLayout(self.slabLayout,350)
self.mainLayout.addLayout(self.hollowLayout,350)
###CALCULATION BUTTON WIDGETS###
self.billetLayout.addRow(self.Title)
self.billetLayout.addRow(self.DiameterLabel, self.DiameterQline)
self.billetLayout.addRow(self.HeightLabel, self.HeightQline)
self.billetLayout.addRow(self.StartTempLabel, self.StartTempQline)
self.billetLayout.addRow(self.FinalTempLabel, self.FinalTempQline)
self.billetLayout.addRow(self.HeatingTimeLabel, self.HeatingTimeQline)
self.billetLayout.addRow(self.buttonCalcBillet)
###ADDING WIDGETS TO CUSTOMER INFORMATION###
####SETTING MAIN LAYOUT###
self.setLayout(self.mainLayout)
def billetCalculationResults(self):
self.billetCalculation = BilletCalculationResults()
self.GetValues()
self.close()
def GetValues(self):
self.Diameter = float(self.DiameterQline.text())
self.Height = float(self.HeightQline.text())
self.StartTemp = float(self.StartTempQline.text())
self.FinalTemp = float(self.FinalTempQline.text())
self.HeatingTime = float(self.HeatingTimeQline.text())
class BilletCalculationResults(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Calculation Results")
self.setGeometry(450,150,350,600)
####CONSTRUCTION OF THE FIRST BILLET CLASS ###
self.UI()
self.show()
def UI(self):
self.billetCalculationPageDesign()
self.billetCalculationLayouts()
def billetCalculationPageDesign(self):
### BILLET RESULTS OF CALCULATION PAGE DESIGN ###
self.billetCalSurfaceAreaLabel = QLabel("Surface Area : ")
self.billetCalSurfaceAreaLabel.setStyleSheet('font-size: 12pt; font-family: arial,sans-serif')
str = "a"
self.billetCalSurfaceAreaLabelResult = QLabel(str)
self.billetCalSurfaceAreaLabelResult.setStyleSheet('font-size: 12pt; font-family: arial,sans-serif')
####VOLUME####
self.billetCalVolumeLabel = QLabel("Volume : ")
self.billetCalVolumeLabel.setStyleSheet('font-size: 12pt; font-family: arial,sans-serif')
self.billetCalVolumeLabelResult = QLabel("")
self.billetCalVolumeLabelResult.setStyleSheet('font-size: 12pt; font-family: arial,sans-serif')
def billetCalculationLayouts(self):
## BILLET RESULTS OF CALCULATION PAGE DESIGN ###
self.billetMainLayout = QFormLayout()
self.billetMainLayout.addRow(self.billetCalSurfaceAreaLabel,self.billetCalSurfaceAreaLabelResult)
self.billetMainLayout.addRow(self.billetCalVolumeLabel,self.billetCalVolumeLabelResult)
self.setLayout(self.billetMainLayout)
def main():
APP = QApplication(sys.argv)
window = Main()
sys.exit(APP.exec())
if __name__== '__main__':
main()
解决方案
您几乎拥有它,只需获取值EDIT(1)
并将它们添加到您的第二个窗口类的构造函数中EDIT(2)
。您也可以将它们保存到变量中,但作为示例,我将值打印到命令行Edit(3)
。
...
def billetCalculationResults(self):
self.GetValues() # EDIT(1) by Shraft
self.billetCalculation = BilletCalculationResults(self.Diameter, # EDIT
self.Height,self.StartTemp,self.FinalTemp,self.HeatingTime) # EDIT
self.close() # EDIT
def GetValues(self):
self.Diameter = float(self.DiameterQline.text())
self.Height = float(self.HeightQline.text())
self.StartTemp = float(self.StartTempQline.text())
self.FinalTemp = float(self.FinalTempQline.text())
self.HeatingTime = float(self.HeatingTimeQline.text())
class BilletCalculationResults(QWidget):
def __init__(self, diameter, height, startTemp, finalTemp, heatingTime): # EDIT(2) by Shraft
super().__init__()
print(diameter) # EDIT(3) by Shraft
print(height) # EDIT
print(startTemp) # EDIT
print(finalTemp) # EDIT
print(heatingTime) # EDIT
self.setWindowTitle("Calculation Results")
self.setGeometry(450,150,350,600)
####CONSTRUCTION OF THE FIRST BILLET CLASS ###
self.UI()
self.show()
...
希望对你有帮助,有更多麻烦告诉我。
推荐阅读
- java - Java编译器优化可以消除volatile
- json - 如何自动将 Eventbrite 事件推送到 Facebook?
- python - Python:Json 响应解析
- python - 存储 numpy 数组的最简单方法
- android - 如何从 webview 调用对话框?
- javascript - 如何在 React JS 中使用脚本
- pycharm - PyCharm 键盘快捷键和突出显示问题
- c# - C#动态控制anchor失形
- plugins - 构建 NativeScript 插件时如何访问硬件层?
- python - Pandas - Dataframe 有包含列表的列。如何按列表中的元素分组?