Tkinter 错误消息会弹出,并显示“quot;请输入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

您好,我正在尝试使用python Tkinter gui制作一个hangman游戏,但是我在用户输入字母的部分遇到了问题,每当我输入字母时,我都会弹出一个错误消息框,说“请输入1个字母”,尽管我只输入了一个字母,该代码部分检查用户输入的1个字母是否在“Def ButtonEffect”功能。我想知道是否有人能帮我解释一下,为什么我输入1个字母时,我的消息框会弹出。

问题是:

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