我想获取变量中的值以将其放置到文本文件中。但我不知道应该采用什么方法。我尝试使用语句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
。
答案 0 :(得分:2)
如果您的实例为IntVar
,则.get()
方法会返回一个整数 - 这就是您使用IntVar
与StringVar
的原因。与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()乍一看似乎有些奇怪,但请注意默认值的差异。