我想获取变量中的值,将其放置到文本文件中。但我不知道该怎么做。我试着用语句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(()一开始可能有点奇怪,但请注意默认值的差异。