2010-11-16 48 views
4

的整数如何获得来自Tkinter的Entry部件的整数类型?获得从条目

如果我试图让使用variable_name.get()值时,它说,这是一个str。如果我尝试使用int(variable_name.get())更改类型,则表示int只能接受字符串或数字。

任何帮助将受到欢迎!

+0

变量的值是多少? – pyfunc 2010-11-16 21:44:32

+0

你能看到str(variable.get())的值吗?虽然这应该是不必要的,因为v.get应该返回一个字符串。 – pyfunc 2010-11-16 21:58:16

+0

如果'variable'是一个'StringVar','int(variable.get())'应该可以工作。你得到什么'print repr(variable.get())'还有'print type(variable.get())'? – 2010-11-16 22:01:05

回答

1

请看下面的例子从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的入口有一个默认的文本值,如果不是整数的数据可能是一个问题。

0

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

如果你有到窗口小部件的引用,您可以使用条目的get方法。这将返回一个字符串,然后可以传递给int功能:

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

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

1

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

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

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

1

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

我建议你尝试添加一个if语句来检查的话:

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

据我所知,这个问题是旧的,但这个工作对我来说,我想我会分享。

+0

此代码不安全。如果@int()@转换失败,则需要捕获可能的@ ValueError @异常。 – rbaleksandar 2017-07-20 05:18:30

3

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

这样,你不必强制转换为一个int,它永远是一个,从输入元素的默认值将现在是0而不是''

这就是我走近它,无论如何,似乎最简单的方法,避免了很多你需要不这样做验证的需要...

0
int(str(variable.get())) 

我试试这个,现在它工作。

+0

欢迎来到StackOverflow。你是否可以更加精确地回答这个问题,为什么在提问6,5年后回答这个问题并且回答了这个问题?如果您对问题有新的认识,您的答案将会很有意思,例如当你的解决方案特定于更新版本的'TkInter'时。最后,为了视觉上的原因,用反引号来包围你的代码 – 2017-04-20 19:32:51