2013-07-13 29 views
1

嗨我正在做一个数学程序,与不同的用户一起工作,然后写入配置文件(.ini)的分数,但事情是当我试图做到这一点,我得到一个错误说:tkinter数学程序类型错误

Exception in Tkinter callback 
Traceback (most recent call last): 
    File "C:\Program Files\Python33\lib\tkinter\__init__.py", line 1475, in __call__ 
    return self.func(*args) 
    File "C:\Users\Public\Documents\Programming\Math-Bot\Math-Bot.py", line 105, in check 
    config[user]['right'] = config[user]['right'] + int(1) 
TypeError: Can't convert 'int' object to str implicitly 

这里是我用它来决定他们是否得到了答案正确或错误代码:

def check(): 
    if guess.get().lower() == str(no1 + no2): 
     global ri 
     answer.set('Right!') 
     ri = ri + 1 
     right.set(ri) 
     config[user]['right'] = config[user]['right'] + int(1) 
    else: 
     global wa 
     answer.set('Wrong, It Was ' + str(no1 + no2)) 
     wa = wa + 1 
     wrong.set(wa) 
     config[user]['wrong'] = config[user]['right'] + int(1) 

反正是有,我可以解决这个问题?

在此先感谢!

回答

2

如果我理解正确的代码,您有一个配置值,它是代表一个数字的字符串,是正确的?如果是这样,你应该先分析它为int(如iCodez建议),然后将其添加,最后再次格式化为一个字符串:

config[user]['right'] = str(int(config[user]['right']) + 1) 

这是必要的,因为Python是一个强类型语言:大部分时间,它不允许在不同类型(在这种情况下,intstr)之间进行操作,要求程序员在应用常规操作员之前将其明确地转换为另一种类型。

+0

像上述错误的一个停止显示出来,但配置文件没有得到更新 – Elxafil

+0

@DanielAlexander这无关你的主问题,并可能是您的代码的其他部分的问题。我对tkinter不熟悉,这个'config'变量是什么,并且它上面的设置值会自动更新配置文件?或者那是必须手动完成的事情?寻找这些信息,如果您仍然有疑问,请更新您的问题或询问另一个问题 – mgibsonbr

2

从我所看到的,config[user]['right']是一个字符串。如果是这样,你不能加1,因为1是一个整数,字符串和整数不能加在一起。 +运算符只将两个相同类型的东西放在一起。所以,如果你想加1 config[user]['right'],你必须首先将其转换为整数这样的:

int(config[user]['right']) + 1 

,或者,如果你想放的性格1上的config[user]['right']结束时,你必须先让1字符串是这样的:

config[user]['right'] + '1' 
+0

好了,现在我没有得到任何错误,但ini文件并没有改变我怎么想 – Elxafil