【问题标题】:How to convert tkinter get function String to int in python如何在python中将tkinter get函数字符串转换为int
【发布时间】:2019-11-07 14:33:26
【问题描述】:
 name=Entry()
x=name.get()

我有print(int(x)) 但它给出了以下错误。

 Traceback (most recent call last):
  File "G:/Coding/Python/first-hit/Mangal's CAFE.py", line 228, in <module>
    print(int(x))
ValueError: invalid literal for int() with base 10: ''

【问题讨论】:

  • 你做得对。该错误告诉您 name.get() 正在返回一个空字符串。您不能将空字符串转换为整数。
  • 如果您的代码示例实际上是您的真实代码,那么问题是您在创建条目小部件后大约一毫秒调用get()。用户将没有时间输入任何内容。

标签: python user-interface tkinter python-3.7


【解决方案1】:

我认为问题在于您的条目是空的,所以也许这就是为什么调用int() 会给您这个错误。 我会尝试在转换为 int() 之前首先验证条目输入(例如,如果条目为空,则传递 0)。

问候

【讨论】:

    【解决方案2】:

    正如 cmets 所说,代码正在将 "" 转换为 int,因此失败。我经常使用类似下面的函数。无论字符串是什么,它总是可以返回一个 int。或者,如果 except 块执行,则可以返回其他内容。

    def to_int(string, fail = 0):
        try: 
            return int(string)
        except ValueError:
            return fail
    

    用法:

    v = to_int(entry.get(), fail = None)
    if v is None:
        run_notint()
    else:
        run_is_int()
    

    我发现在许多情况下简单地返回零就足够了,在这种情况下 if: else: 不是必需的。

    v = to_int(entry.get())
    ... code to process the integer.
    

    【讨论】:

      猜你喜欢
      • 2021-11-12
      • 2011-04-28
      • 2011-04-26
      • 2015-04-30
      • 1970-01-01
      • 2016-08-17
      • 1970-01-01
      相关资源
      最近更新 更多