如何将 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
'''
我希望我能正确解释我的问题。我有一个带有 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
'''