【发布时间】:2017-12-27 15:04:25
【问题描述】:
我是编程新手,2个月前开始学习python,所以请简单解释一下。对于我的学士论文,我编写了 2 个独立的 Python 脚本,它们从用户那里获取输入、进行计算并给出输出。我没有使用任何 OOP,但两个脚本中都有很多功能。 现在我必须让脚本通过 GUI 运行(在 GUI 中获取用户输入和打印输出)。我使用 PyQt5 和 Qt 设计器。 我在其他线程上读到这里有人建议在每个脚本中创建一个类,以便从主脚本中调用并将整个内容放在类中。我这样做了,并且以某种方式设法从 GUI 获取输入,并将该输入提供给其中一个计算脚本。我的问题是我不知道如何将计算脚本的输出返回到主脚本。如果我设法这样做,使用 setText 在 GUI 中打印结果应该很容易。 我的主脚本如下所示:
import sys
from PyQt5 import QtWidgets, QtCore, uic
from PyQt5.QtCore import pyqtSlot, pyqtSignal
from iad import IAD # here import the file iad.py with class IAD
class MeinDialog (QtWidgets.QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.ui = uic.loadUi("kobi.ui", self)
fck = 25
self.input_fck.currentIndexChanged.connect(self.fck_change)
self.show()
def fck_change(self):
fck_i = (self.input_fck.currentIndex())
if fck_i == 0:
fck = 12
elif fck_i == 1:
fck = 16
elif fck_i == 2:
fck = 20
elif fck_i == 3:
fck = 25
elif fck_i == 4:
fck = 30
elif fck_i == 5:
fck = 35
elif fck_i == 6:
fck = 40
elif fck_i == 7:
fck = 45
elif fck_i == 8:
fck = 50
IAD(fck)
as1 = str(IAD.as1_output()) # ??? this does not work
self.output_as1.setText(as1) # ???
app = QtWidgets.QApplication(sys.argv)
dialog = MeinDialog()
dialog.show()
sys.exit(app.exec_())
iad.py 文件如下所示:
class IAD():
def __init__(self, fck):
#get inputs from user
#make some calculations
#output:
as1 = f_as1(epsc2_Found, epss1_Found) #f_as1 is a function
函数 as1 如下所示:
def f_as1(epsc2_var, epss1_var):
if ned < 0 and med == 0:
return (ned + b*h*fcd/10) / (sigma_sd(epss1_var) / 10 + sigma_sd(epss1_var / varas) / (10)) #+ fcd/10*(1+1/varas))
elif ned > 0 and med == 0:
return (alphar_var(epsc2_var) * b * (abs(epsc2_var) * d / (epss1_var + abs(epsc2_var))) * fcd / 10 + ned) / (
sigma_sd(epss1_var) / 10 + sigma_sd(epss1_var) / (10 * varas) )
elif bereich5 == True:
return (alphar_var_5(epsc2_var) * b * h * fcd / 10 + ned) / (
sigma_sd(epss1_bereich_5(epsc2_var)) / 10 + sigma_sd(epss2_bereich_5(epsc2_var)) / (10 * varas))
else:
return (alphar_var(epsc2_var)*b*(-epsc2_var*d/(epss1_var-epsc2_var))*fcd/10*(h_m/2-ka_var(epsc2_var)*(-epsc2_var*d_m/(epss1_var-epsc2_var)))-med)/(-sigma_sd(epss1_var) * zs1 / 1000 + sigma_sd((epss1_var - epsc2_var) * d2 / d + epsc2_var) * zs2 / (varas * 1000))
如有任何提示、建议和意见,我将不胜感激。
【问题讨论】:
标签: python user-interface pyqt5