简单的Python tkinter掷骰子游戏

0 投票
1 回答
2721 浏览
提问于 2025-05-01 03:44

我正在尝试用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 个回答

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

撰写回答