使用tkinter时的语法错误

0 投票
1 回答
517 浏览
提问于 2025-04-18 07:59

我在代码开头导入了tkinter,下面是我在GUI部分的代码。之前一切都运行得很好,按钮也正常显示,但在我写了'strengthSkill'的代码后,这一行的开头出现了语法错误:

mlabel=Label(text='Battle!!').place(x=50,y=130)

错误提示中高亮显示的是"mlabel",但我查看了很久也没找到问题所在。我还创建了一个去掉所有Tkinter内容的第二个版本,结果一切都正常。

mGui = Tk()
   ment = diceint()


   mGui.geometry('400x400')
   mGui.configure(bg="purple")
   mGui.title('Miss Watts Dice Games')


   mlabel=Label(text='4,6,12 sided dice roller').place(x=50,y=50)
   mbutton=Button(mGui,text="Go",command=diceroll).place(x=250,y=50)
   mentry=Entry(mGui,variable=ment).pack()

   mlabel=Label(text='Strength and skill calculator').place(x=50,y=90)
   mbutton=Button(mGui,text="Go",command=strengthSkill.place(x=250,y=90)

   mlabel=Label(text='Battle!!').place(x=50,y=130)
   mbutton=Button(mGui,text="Go",command=battle.place(x=250,y=130)


   mbutton=Button(mGui,text="Exit",command=close).place (x=50,y=250)

   mlabel=Label(text='\N{COPYRIGHT SIGN} Dru Watts 2014').place(x=50,y=300)

   mGui.mainloop()

不幸的是,我不能发布主要的代码部分,因为我正在为我的学生制作一个示例,展示他们需要完成的控制评估课程作业,我希望他们不要看到这个!

请多多包涵——我对tkinter非常陌生。担心我可能把教程搞混了!

1 个回答

1

这里缺少一个右括号:

mbutton=Button(mGui,text="Go",command=strengthSkill).place(x=250,y=90)
                                                   ^

还有这里:

mbutton=Button(mGui,text="Go",command=battle).place(x=250,y=130)
                                            ^

另外,因为每个Tkinter小部件的placepack方法都是直接在原地操作的,所以mbuttonmlabel等都会被赋值为None。因此,如果你打算在后面使用这些变量,就需要把这些方法放在单独的行上调用:

mlabel=Label(text='4,6,12 sided dice roller')
mlabel.place(x=50,y=50)

否则,我建议干脆去掉这些变量,因为它们其实没什么用:

Label(text='4,6,12 sided dice roller').place(x=50,y=50)
Button(mGui,text="Go",command=diceroll).place(x=250,y=50)
Entry(mGui,variable=ment).pack()

撰写回答