如何将 lineEdit 与定义变量的函数连接起来?

how to connect a lineEdit with a function that defines a variable?

我希望我能正确解释我的问题。我有一个带有 lineEdits 的 pyQt5 GUI,例如 lEUMDicke。当文本更改时,我想定义一个变量,例如 UMDicke,其函数将 , 更改为 .并将变量作为浮点数读取。我的 python 版本是 3.7。

class MyApp(QtWidgets.QMainWindow, Ui_MainWindow):

    def __init__(self):
        self.lEUMDicke.textChanged.connect(lambda self.UMDicke: (self.vardecl(self.lEUMDicke)))

    def vardecl(self,varstring):
        try:
            r = varstring.replace(",",".")
            rvalue = float(r)
        except:
            None
        return rvalue

非常感谢您的每一个回答

如果您将 lEUMDicke 设为 class 变量,则无需将其作为参数传递,因为可以使用 self 关键字访问它。此外,使用 bare except 是不好的做法,尤其是里面只有 None 的时候。如果出现您不期望的错误,您通常希望程序崩溃以便您知道发生了什么。就预期错误而言,我认为(可能是错误的)python 如果无法转换为浮点数,则会抛出 ValueError,因此只需尝试捕获 ValueError。

还有一个 'Validator' class is Qt 可以帮助防止用户输入字母等

'''

class MyApp(QtWidgets.QMainWindow, Ui_MainWindow):

def __init__(self):
    self.lEUMDicke = QLineEdit()
    self.lEUMDicke.setValidator(QDoubleValidator())
    self.lEUMDicke.textChanged.connect(self.vardecl)

@pyqtSlot()
def vardecl(self):
    try:
        r = self.lEUMDicke.text().replace(",",".")
        rvalue = float(r)
    except ValueError:
        print("Cannot convert to float")
        return -1
    return rvalue

'''