【问题标题】:Get an Integer from Entry从条目中获取一个整数
【发布时间】:2010-11-16 21:41:49
【问题描述】:

如何从 Tkinter Entry 小部件中获取整数类型?

如果我尝试使用variable_name.get() 获取值,它会说它是str。如果我尝试使用int(variable_name.get()) 更改类型,它会说 int 只能接受字符串或数字。

欢迎任何帮助!

【问题讨论】:

  • 变量的值是多少?
  • 你能看到str(variable.get())的值吗?虽然这应该是不必要的,因为 v.get 应该返回一个字符串。
  • 如果variableStringVarint(variable.get()) 应该可以工作。 print repr(variable.get())print type(variable.get()) 有什么好处?

标签: python tkinter


【解决方案1】:

我最近遇到了同样的问题。我运行了一个小方法:

newSave = self.EntryDict[key].get
        try: 
            int(newSave)
            bool = True
        except ValueError:
            bool = False

我得到了你描述的错误,它只能接受一个字符串或一个数字。 我的问题是我的 .get 没有括号。在我放 .get() 之后一切正常。我想这也可能是你的问题。但是没有看到你的任何代码,我不能确定。

【讨论】:

    【解决方案2】:

    最后我只是将变量初始化为tk.IntVar()而不是tk.StringVar()

    这样您就不必将其转换为 int,它将始终为 1,Entry 元素的默认值现在将是 0 而不是 ''

    无论如何我都是这样处理的,这似乎是最简单的方法,并且避免了您需要做的大量验证...

    【讨论】:

      【解决方案3】:

      请参见 Tkinter 中的以下示例:

      v = StringVar()
      e = Entry(master, textvariable=v)
      e.pack()
      
      v.set("a default value")
      s = v.get()
      

      v 是一个 StringVar 类。尝试做 - int(str(variable.get()))

      但是类说 variable.get 应该返回一个字符串。

      Tkinter 条目有一个默认文本值,如果它不是整数数据,这可能是个问题。

      【讨论】:

        【解决方案4】:

        我也是 Tkinter 的新手,我也遇到了同样的问题。我认为问题是Entry字段的默认值是一个空字符串,不能转换为整数。

        我建议你尝试添加一个 if 语句来检查这种情况:

        if variable.get() != '':
            other_variable = int(variable.get())
        

        我知道这个问题很老,但这对我有用,我想我会分享。

        【讨论】:

        • 此代码不安全。如果@int()@ 转换失败,您需要捕获可能的@ValueError@ 异常。
        【解决方案5】:

        当您在问题中说“变量”时,您指的是 StringVar 的实例还是对小部件本身的引用?

        如果您有对小部件的引用,您可以使用条目的get 方法。这将返回一个字符串,然后您可以将其传递给int 函数:

        s = e.get()
        i = int(s)
        

        如果这不能解决您的问题,您能否提供一些工作代码来准确显示您遇到的问题?

        【讨论】:

          【解决方案6】:
          int(str(variable.get()))
          

          我试试这个,现在可以了。

          【讨论】:

          • 欢迎来到 StackOverflow。您能否更准确地说明您为什么在这个问题被问到 6.5 年后并在这个问题得到回答后才回答这个问题?如果它对问题提供了一些新的见解,您的答案将会很有趣,例如当您的解决方案特定于 TkInter 的较新版本时。最后,出于视觉原因,用反引号将您的代码括起来
          猜你喜欢
          • 2021-12-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-26
          • 1970-01-01
          • 2018-12-29
          • 1970-01-01
          相关资源
          最近更新 更多