【发布时间】:2017-10-09 10:19:02
【问题描述】:
这个简单的应用程序需要在单击按钮后立即执行计算。
运行程序时出现错误:
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))
【问题讨论】:
-
什么是
grid? -
使用这个:
self.btn.clicked.connect(lambda : calculations.calculate_kv(int(self.qle.text()), int(self.pdle.text()) ))这会暂时解决问题,但是你还有一个严重的错误,所以如果你没有创建对象,你就创建了widget类。 -
@eyllanesc 网格是一种在 Qt 框架内布局程序的方法。它将空间划分为行和列。就像电子表格一样。例如,您可以查看Zetcode's PyQt 5 教程。
标签: python-3.x pyqt5 qpushbutton