简单的Python Tkinter的骰子游戏
问题描述:
我试图创建一个Tkinter的一个简单的骰子模拟器,但继续运行这个错误:简单的Python Tkinter的骰子游戏
Traceback (most recent call last):
File "C:\Users\User\Desktop\NetBeansProjects\DiceSIMULATOR\src\dicesimulator.py", line 18, in <module>
Label("Enter your guess").pack()
File "C:\Python34\lib\tkinter\__init__.py", line 2573, in __init__
Widget.__init__(self, master, 'label', cnf, kw)
File "C:\Python34\lib\tkinter\__init__.py", line 2084, in __init__
BaseWidget._setup(self, master, cnf)
File "C:\Python34\lib\tkinter\__init__.py", line 2062, in _setup
self.tk = master.tk
AttributeError: 'str' object has no attribute 'tk'
这里是我的代码:
from random import randrange
from tkinter import *
def checkAnswer():
dice = randrange(1,7)
if int(guess) == dice:
tkMessageBox.showinfo("Well Done!","Correct!")
if int(guess) > 6:
tkMessageBox.showinfo("Error"," Invalid number: try again")
elif int(guess) <= 0:
tkMessageBox.showinfo("Error"," Invalid number: try again")
else:
tkMessageBox.showinfo("Incorrect","Incorrect: dice rolled {}.".format(diceRoll))
root = Tk()
Label("Enter your guess").pack()
g = StringVar()
inputGuess = TextBox(master, textvariable=v).pack()
guess = v.get()
submit = Button("Roll Dice", command = checkAnswer).pack()
root.mainloop()
答
下面是修改后的版本您的代码:
Label
小部件需要父项(在本例中为root
)。你没有具体说明。这同样适用于Button
小部件。其次,变量v
未定义,但我认为您的意思是g
,因此请将所有对变量v
的引用更改为g
。
from random import randrange
from tkinter import *
def checkAnswer():
dice = randrange(1,7)
if int(guess) == dice:
tkMessageBox.showinfo("Well Done!","Correct!")
if int(guess) > 6:
tkMessageBox.showinfo("Error"," Invalid number: try again")
elif int(guess) <= 0:
tkMessageBox.showinfo("Error"," Invalid number: try again")
else:
tkMessageBox.showinfo("Incorrect","Incorrect: dice rolled {}.".format(diceRoll))
root = Tk()
Label(root,text="Enter your guess").pack() #parent wasn't specified, added root
g = StringVar()
inputGuess = Entry(root, textvariable=g).pack() #changed variable from v to g
guess = g.get() #changed variable from v to g
submit = Button(root, text = "Roll Dice", command = checkAnswer).pack() #added root as parent
root.mainloop()
它是做什么的 – 2014-11-02 13:41:40
没有为'Label'小部件指定父项。 – Kidus 2014-11-02 13:42:57
不要只是转储代码,不要解释OP出错的原因。 – 2014-11-02 13:45:28