这个简单的应用程序需要在单击按钮后立即执行计算。
运行程序时收到错误:
invalid literal for int() with base 10: ''
在调查我的代码时,我得出的结论是,这可能是因为在程序运行之前点击了按钮操作。因此,尝试将空字符串转换为无法完成的int。
计算是在另一个类中进行的,所以我不知道它为什么要执行计算。
我的问题是如何阻止程序在实际运行之前执行点击操作?
class main(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
begin_row = 1
end_row = 4
self.setWindowTitle('Rekenprogramma')
exitAct = QAction(QIcon('exit.png'), '&Exit', self)
exitAct.setShortcut('Ctrl+Q')
exitAct.setStatusTip('Exit application')
exitAct.triggered.connect(qApp.quit)
#Defining buttonss
#Debiet / Flor
self.lbl = QLabel('Debiet',self)
self.qle = QLineEdit(self)
#KV
self.kvlbl = QLabel("KV",self)
self.kvle = QLineEdit(self)
#PressureDrops
self.pdlbl = QLabel("Pressure Drop", self)
self.pdle = QLineEdit(self)
self.btn = QPushButton('Calculate', self)
"""
Bulky not relevant code
"""
#Caclulate Button
grid.addWidget(self.btn, end_row,1)
self.btn.clicked.connect(calculations.calculate_kv(int(self.qle.text()), int(self.pdle.text()) ))
self.show()
class calculations():
# sets parameters for the main application
def calculate_kv(flow, pressuredrop):
kv = flow / sqrt(pressuredrop)
return str(round(kv, 2))
答案 0 :(得分:0)
我明白了。通过创建一个新函数,然后调用计算。它消除了一些混乱并提供了解决方案。
self.btn.clicked.connect(self.calculate)
self.show()
def calculate(self):
answer = calculations.calculate_kv(int(self.qle.text()), int(self.pdle.text()) )
self.kvle.setText(answer)
class calculations():
# sets parameters for the main application
def calculate_kv(flow, pressuredrop):
kv = flow / sqrt(pressuredrop)
return str(round(kv, 2))
问题在于将参数传递给
answer = calculations.calculate_kv(arguments)
功能,执行代码。所以我认为论证的传递不应该在信号中完成。