不使用时是否在0处编辑行?PyQ公司

2024-05-16 06:17:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在的情况是,我接受用户的输入,然后做一些数学运算。。用户从组合框中选择一个项目,并在旁边的行编辑中输入一个数字。当他单击ok时,它返回(comboboxselectedvalue)+(lineeditvalue),它可以工作,大多数时候,我的问题是,当用户将lineedit留空时,它返回一个错误:

ValueError:基数为10的int()的文本无效:“”

cb1 = self.lineEdit.text()
zb1=self.comboBox.currentText()
az1 = int(cb1)
print(zb1+az1)

当没有输入任何内容并留空时,如何将行编辑的值设置为0?我有20行编辑和20个组合框


Tags: 项目用户self编辑情况ok数字数学
1条回答
网友
1楼 · 发布于 2024-05-16 06:17:27

每当用户输入非数字的内容时,您的代码就会引发一个异常

最好的处理方法是验证条目(并用有效的东西预先填充它,比如0),这样他们就不能在框中用无效的东西单击OK

但是如果你想在“引擎”代码中而不是在GUI中处理这个问题,你可以;它不会像用户体验那么好

听起来你想做的是把一个空盒子当作0。一个非空但非数字的条目呢?这是否也应被视为0?如果是这样,这很容易;异常已经捕获了您想要捕获的内容,所以您只需要处理它

try:
    az1 = int(cb1)
except ValueError:
    az1 = 0

另一方面,如果您想处理不同于空的非数字条目,则要复杂一些;这个异常将它们集中在一起,所以您需要一个if测试来代替这个异常,或者除了这个异常之外还需要一个if测试。例如,如果希望非数字文本按当前方式中止程序,但空框表示0,则可以编写:

try:
    az1 = int(cb1)
except ValueError:
    if not az1:
        az1 = 0
    else:
        raise

或者,更简单地说:

az1 = int(cb1) if cb1 else 0

相关问题 更多 >