Tkinter Label,TypeError:无法连接'str'和'instance'对象

时间:2013-09-28 10:03:37

标签: python tkinter concatenation typeerror

我正在编写一个骰子模拟器,可以掷出6面骰子或8面骰子。我使用的是Python 2.7和Tkinter。这是我的文件,其中包含一个带有骰子的字典:

DICE = dict(
    sixsided={'name': 'Six Sided Dice',
              'side': 6},
    eightsided = {'name': 'Eight Sided Dice',
                  'side': 8}
    )
names = ['Six Sided Dice', 'Eight Sided Dice']

以下是我的主文件中导致问题的代码:

diceroll = random.randrange(1,DICE[selecteddice]["side"])
Label(diceroll, text="You rolled a " + diceroll + " on the " + DICE[selecteddice]["name"])

我的问题是运行文件时出现的错误消息:

TypeError:无法连接'str'和'instance'对象

非常感谢任何帮助!! :)

1 个答案:

答案 0 :(得分:1)

希望你期待这样的事情:

Example window

你必须传递Tk(),假设它被导入为from Tkinter import * 作为Tk小部件的第一个参数:

root = Tk()
Label(root, text="You rolled a " + diceroll + " on the " + DICE[selecteddice]["name"])

但现在您最终会使用TypeError: cannot concatenate 'str' and 'int' objects,因此请使用str()方法将diceroll转换为字符串

Label(root, text="You rolled a " + str(diceroll) + " on the " + DICE[selecteddice]["name"])

<强> TypeError: cannot concatenate 'str' and 'instance' objects 发生错误,因为如果不使用__repr____str__方法 而无法将数据作为字符串或int从类中检索,而是作为对象

因为您没有显示完整的代码,所以我可以提供帮助

#The top image was produced thanks to this
import random
from Tkinter import *

selecteddice = 'sixsided'

DICE = dict(
    sixsided={'name': 'Six Sided Dice',
              'side': 6},
    eightsided = {'name': 'Eight Sided Dice',
                  'side': 8}
    )
names = ['Six Sided Dice', 'Eight Sided Dice']

root = Tk()

diceroll = random.randrange(1,DICE[selecteddice]["side"])
Label(root, text="You rolled a " + str(diceroll) + " on the " + DICE[selecteddice]["name"]).pack()

root.mainloop()