不使用时在 0 处进行行编辑? PyQt
Line edits at 0 when not used? PyQt
我在接受用户输入并进行一些数学运算的情况下。用户从组合框中选择一个项目,然后在它旁边的行编辑中输入一个数字。当他点击确定时,它 returns (comboboxselectedvalue)+(lineeditvalue),它起作用了,大多数时候,我的问题是,当用户将 lineedit 留空时,它 returns 一个错误:
ValueError:以 10 为底的 int() 无效文字:''
cb1 = self.lineEdit.text()
zb1=self.comboBox.currentText()
az1 = int(cb1)
print(zb1+az1)
当没有输入任何内容并留空时,如何将行编辑的值设置为 0?我有 20 个行编辑和 20 个组合框..
每当用户输入任何非数字的内容时,您的代码将引发异常 - 包括根本不输入任何内容。
处理此问题的最佳方法是验证条目(并预先填充一些有效的内容,例如 0
),这样他们就无法在框中输入无效内容后单击“确定”。
但是如果您想在 "engine" 代码中而不是在 GUI 中处理它,您可以;只是用户体验不会那么好。
听起来您想做的是将空框视为 0
。非空但非数字的条目呢?是否也应将其视为 0
?如果是这样,这很容易;异常已经捕捉到了你想要捕捉的,所以你只需要处理它。
try:
az1 = int(cb1)
except ValueError:
az1 = 0
另一方面,如果您想将非数字条目与空条目区别对待,那就有点复杂了;异常将它们混为一谈,因此您需要 if
测试来代替异常或在异常之外进行测试。例如,如果您希望非数字文本像当前那样中止程序,但空框表示 0,您可以这样写:
try:
az1 = int(cb1)
except ValueError:
if not az1:
az1 = 0
else:
raise
或者更简单地说:
az1 = int(cb1) if cb1 else 0
我在接受用户输入并进行一些数学运算的情况下。用户从组合框中选择一个项目,然后在它旁边的行编辑中输入一个数字。当他点击确定时,它 returns (comboboxselectedvalue)+(lineeditvalue),它起作用了,大多数时候,我的问题是,当用户将 lineedit 留空时,它 returns 一个错误:
ValueError:以 10 为底的 int() 无效文字:''
cb1 = self.lineEdit.text()
zb1=self.comboBox.currentText()
az1 = int(cb1)
print(zb1+az1)
当没有输入任何内容并留空时,如何将行编辑的值设置为 0?我有 20 个行编辑和 20 个组合框..
每当用户输入任何非数字的内容时,您的代码将引发异常 - 包括根本不输入任何内容。
处理此问题的最佳方法是验证条目(并预先填充一些有效的内容,例如 0
),这样他们就无法在框中输入无效内容后单击“确定”。
但是如果您想在 "engine" 代码中而不是在 GUI 中处理它,您可以;只是用户体验不会那么好。
听起来您想做的是将空框视为 0
。非空但非数字的条目呢?是否也应将其视为 0
?如果是这样,这很容易;异常已经捕捉到了你想要捕捉的,所以你只需要处理它。
try:
az1 = int(cb1)
except ValueError:
az1 = 0
另一方面,如果您想将非数字条目与空条目区别对待,那就有点复杂了;异常将它们混为一谈,因此您需要 if
测试来代替异常或在异常之外进行测试。例如,如果您希望非数字文本像当前那样中止程序,但空框表示 0,您可以这样写:
try:
az1 = int(cb1)
except ValueError:
if not az1:
az1 = 0
else:
raise
或者更简单地说:
az1 = int(cb1) if cb1 else 0