【发布时间】: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