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



我想获取变量中的值,将其放置到文本文件中。但我不知道该怎么做。我试着用语句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

如果有IntVar的实例,.get()方法会返回一个整数——这就是为什么要使用IntVar而不是StringVar。像python中的任何其他整数一样,您可以使用str:进行转换

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

在形成要写入文件的字符串时,尝试将整数与字符串连接会出现错误。这就是你犯错误的原因。您可以通过使用简单的强制转换str(some_int)将"int"转换为"str"来修复它。在您的情况下,将第3行的self.score.get()更改为str(self.score.get())即可。

或者,您可以在第1行将self.score设置为StringVar(),而不是IntVar(。您仍然需要为分数指定一个值,这可以通过self.score.set(value)来完成。

默认情况下,IntVar()获得值0,StringVar("(空字符串)。您可以通过至少两种方式为IntVar赋值:

(1) 创建时,使用iv = IntVar(value=1)

(2) 创建后,使用iv.set(1)

StringVar()也是如此。

将self.score从IntVar()更改为StringVar(()一开始可能有点奇怪,但请注意默认值的差异。

最新更新