Tkinter 错误消息会弹出,并显示“quot;请输入1个字母“;
您好,我正在尝试使用python Tkinter gui制作一个hangman游戏,但是我在用户输入字母的部分遇到了问题,每当我输入字母时,我都会弹出一个错误消息框,说“请输入1个字母”,尽管我只输入了一个字母,该代码部分检查用户输入的1个字母是否在“Def ButtonEffect”功能。我想知道是否有人能帮我解释一下,为什么我输入1个字母时,我的消息框会弹出。问题是:Tkinter 错误消息会弹出,并显示“quot;请输入1个字母“;,tkinter,python-3.5,tkinter-canvas,Tkinter,Python 3.5,Tkinter Canvas,您好,我正在尝试使用python Tkinter gui制作一个hangman游戏,但是我在用户输入字母的部分遇到了问题,每当我输入字母时,我都会弹出一个错误消息框,说“请输入1个字母”,尽管我只输入了一个字母,该代码部分检查用户输入的1个字母是否在“Def ButtonEffect”功能。我想知道是否有人能帮我解释一下,为什么我输入1个字母时,我的消息框会弹出。问题是: from tkinter import * from Hangman import * #GUI for hangman
from tkinter import *
from Hangman import *
#GUI for hangman game
class HangmanGui:
def __init__(self):
self.game = HangmanGame()
self.root = Tk()
self.root.title('Hangman')
makeHangman = self.makeHangman('empty.gif')
makeHangman.pack()
frame2= self.makeframe2()
frame2.pack()
self.root.mainloop()
def makeHangman(self,filename):
frame1= Frame(self.root)
self.img = PhotoImage(file = filename)
ht = self.img.height()
wd = self.img.width()
canvas = Canvas(self.root,
height = ht,
width = wd
)
canvas.create_image(0, 0,
image = self.img,
anchor = NW
)
canvas.pack()
return frame1
def makeframe2(self):
frame2= Frame(self.root)
self.wrong_letter= Label(frame2,
text=self.game.getWrongList)
self.winner= Label(frame2,
text=self.game.win)
self.correct_answer= Label(frame2,
text=self.showcorrect)
self.user_input= Entry(frame2, width=10)
self.button= Button(frame2,
text='Guess', command=self.buttonEffect)
self.wrong_letter.pack()
self.winner.pack()
self.correct_answer.pack()
self.user_input.pack()
self.button.pack()
return frame2
def buttonEffect(self):
guess=self.user_input.get
guess1=str(guess)
if(len(guess1)!=1):
messagebox.showerror('error','Please only enter 1 letter.')
#elif(guess1.isalpha()==False):
#messagebox.showerror('Error', 'Please enter a letter.')
def showcorrect(self,guess1):
display = "_" * len(guess1)
if self.game.chooseword.find(guess1)>=1:
print()
wronglist=self.game.getWrongList()
self.label.config(text=str(wronglist))
if len(wronglist)== 1:
makeHangman = self.makeHangman('hangman head.gif')
elif len(wrongList)== 2:
makeHangman = self.makeHangman('hangman body.gif')
elif len(wrongList)== 3:
makeHangman = self.makeHangman('hangman 1 arm.png')
elif len(wrongList)== 4:
makeHangman = self.makeHangman('hangman 2 arms.jpg')
elif len(wrongList)== 5:
makeHangman = self.makeHangman('hangman 1 leg.png')
elif len(wrongList)== 6:
makeHangman = self.makeHangman('hangman.png')
HangmanGui()
您没有调用函数get
,您只是简单地将函数赋给变量。稍后您会调用str(guess)
,这会产生一个长字符串
要解决此特定问题,请添加括号以将引用转换为函数调用:
guess=self.user_input.get
粘贴代码后,您必须选择它,然后单击{}按钮或输入cntl-K。这太多的代码了,无法浏览。除了您之外,任何人都无法运行它进行调试。请参阅。若要调试,请在错误消息中包含guess及其长度。因为guess是一个字符串,
guess1=str(guess)
没有用。PS:我尝试了一个最小的10个示例,输入1个字符的长度确实是1,2个字符的长度是2,依此类推,所以我不知道问题出在哪里。第一步应该是进行一些调试。例如,打印出str(猜测)的结果
可能已经为您提供了足够的信息,您可以自己解决这个问题。我是编程高手,请帮助我BaseGod@bobby:这与此问题无关。stackoverflow不是一个代码编写服务。如果您有其他问题,请进行一些研究,进行一些调试,然后问另一个问题。对业余程序员要更加礼貌。这有什么意义stackoverflow@bobby:如果我冒犯了您,我很抱歉。Stackoverflow与其他支持扩展讨论的网站不同。它不是为扩展讨论而设计的。如果您有其他问题要问,请单击“提问”“按一下按钮,人们会很乐意回答的。如果你在评论中隐藏额外的问题,很可能没人会看到。
guess=self.user_input.get()