如何将变量的值转换为StringVar或IntVar()为.get()呢?

时间:2015-03-25 11:50:07

标签: python tkinter

我想获取变量中的值以将其放置到文本文件中。但我不知道应该采用什么方法。我尝试使用语句self.score = StringVar()self.score = str(self.score)self.score = IntVar()对其进行转换。但它导致了我没想到的。我需要帮助来修复我的项目。这些代码可以帮助您理解。谢谢。

        self.score = IntVar ()
        f = open('E.txt','a')
        f.write(self.name_ent.get() + '-' + self.score.get() + '\n')
        f.close()

self.score.get错误,因为它是int

2 个答案:

答案 0 :(得分:2)

如果您的实例为IntVar,则.get()方法会返回一个整数 - 这就是您使用IntVarStringVar的原因。与python中的任何其他整数一样,您可以使用str转换它:

score = str(self.score.get())

答案 1 :(得分:0)

在形成要写入文件的字符串时,尝试将整数与字符串连接会产生错误。这是您犯错的基础。您可以通过使用简单的强制转换str(some_int)将'int'变成'str'来解决此问题。就您而言,将第3行的self.score.get()更改为str(self.score.get())即可解决问题。

或者,您可以使self.score成为StringVar()而不是第1行的IntVar(),然后第3行的问题就消失了。您仍然需要为得分分配一个值,您可以使用self.score.set(value)来完成。

默认情况下,IntVar()的值为0,而StringVar()的值为“”(空字符串)。您可以通过至少两种方式为IntVar分配值:

(1)创建时,带有iv = IntVar(value=1)

(2)创建后,带有iv.set(1)

StringVar()也是如此。

将IntVar()中的self.score更改为StringVar()乍一看似乎有些奇怪,但请注意默认值的差异。