在运行之前单击PyQt按钮

时间:2017-10-09 10:19:02

标签: python-3.x pyqt5 qpushbutton

这个简单的应用程序需要在单击按钮后立即执行计算。

运行程序时收到错误:

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))

1 个答案:

答案 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)

功能,执行代码。所以我认为论证的传递不应该在信号中完成。