【问题标题】:ValueError: invalid literal for int() with base 10 - TextInput valueValueError:以 10 为基数的 int() 的无效文字 - TextInput 值
【发布时间】:2020-05-31 12:59:28
【问题描述】:

我最近开始学习 Kivy,在处理 TextInput 框中输入的文本/数字时遇到了一个奇怪的错误。

Kivy 代码如下所示:

BoxLayout:
        orientation: 'vertical'
        BoxLayout:
            orientation: 'horizontal'
            Label:
                text: 'No. of buttons:'
                markup: True
                color: 0, 0, 0, 1
            CustomTextInput:
                id: textinput_num
                max_characters: 2
                multiline: False
                input_filter: 'int'

相关的 Python 代码如下所示:

class DropDownScreen(Screen):
    def add_dd_values(self):
        dd_input = App.get_running_app().root.get_screen('dd_screen').ids.textinput_num.text
        print("TextInputBox: ", dd_input, "\n")
        print("Length: ",len(dd_input))
        print(int(dd_input)+1)

我已经引用了文本输入框的值如下:

dd_input = App.get_running_app().root.get_screen('dd_screen').ids.textinput_num.text

这里,textinput_num是相关文本输入框的id。我能够打印文本输入框的值并检查字符串的长度。注意:我使用 input_filter: 'int' 语句只允许文本输入框中的数字。我知道 dd_input 将收到一个字符串值。所以,我尝试将其转换为整数值并进行数值运算。

但是,我收到以下错误:ValueError: invalid literal for int() with base 10:

我在谷歌上查了一下,似乎这是正在处理的数据类型的问题。

你能帮我理解这里出了什么问题吗?从文本输入框中访问和读取数值的正确方法是什么?

最奇怪的是,对于同一段代码,此错误本质上是间歇性的。有时它会返回错误,有时则不会。

【问题讨论】:

  • 您省略了错误消息中最有趣的部分:What is an invalid literal for int() with base 10?
  • @mkrieger1 我很抱歉错过了。我输入了 11 或 12 作为输入。
  • 请显示您在这种情况下收到的准确完整的错误消息。
  • @mkrieger1 我以为我输入的是 11 或 12,但重新检查问题指出了明显的错误:ValueError: invalid literal for int() with base 10: ''.它是一个空字符串或空字符串。很抱歉问了这么愚蠢的问题。我应该更加小心。

标签: python-3.x type-conversion kivy kivy-language


【解决方案1】:

您提到错误是“间歇性的”。我可能错了,但我认为这就是正在发生的事情。当 textinput 字段为空白/空时,您会收到异常/错误。本质上,这意味着 dd_input 的值为 null 或者它指向一个空字符串,该字符串不能转换为整数。因此,错误。

添加一个条件来处理异常,看看会发生什么:

if dd_input == '':
            dd_input="0"

【讨论】:

  • 就是这样。万分感谢。这是一个愚蠢的错误。
猜你喜欢
  • 2017-12-06
  • 2013-08-04
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 1970-01-01
相关资源
最近更新 更多