我正在编写一个骰子模拟器,可以掷出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'对象
非常感谢任何帮助!! :)
答案 0 :(得分:1)
希望你期待这样的事情:
你必须传递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()