2014-11-02 179 views
0

我试图创建一个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() 

回答

1

下面是修改后的版本您的代码:

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() 
+1

它是做什么的 – 2014-11-02 13:41:40

+0

没有为'Label'小部件指定父项。 – Kidus 2014-11-02 13:42:57

+0

不要只是转储代码,不要解释OP出错的原因。 – 2014-11-02 13:45:28