【问题标题】:Error message pops up saying "please enter 1 letter"弹出错误消息“请输入 1 个字母”
【发布时间】:2016-04-15 06:23:57
【问题描述】:
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()

嗨,我正在尝试使用 python Tkinter gui 制作一个刽子手游戏,但我在用户输入字母的部分遇到了问题,每当我输入字母时,我都会弹出一个错误消息框,上面写着“请输入1 个字母”,即使我只输入了一个字母,检查用户是否输入 1 个字母的代码部分位于“Def ButtonEffect”功能下。我想知道是否有人可以帮助我了解为什么即使我输入 1 个字母也会弹出我的消息框。

【问题讨论】:

  • 粘贴代码后,必须选择它并单击{}按钮或输入cntl-K。
  • 这段代码太多了。它甚至不能由除您之外的任何人运行以进行调试。见stackoverflow.com/help/mcve。要进行调试,请在错误消息中包含guess 及其长度。因为guess是一个字符串,guess1 = str(guess)是没用的。 PS:我尝试了一个最少 10 个示例,输入 1 个字符确实给出了 1 的长度,而 2 给出了 2,依此类推,所以我不知道问题是什么。
  • 第一步应该是做一些调试。例如,打印出str(guess) 的结果可能已经为您提供了足够的信息来自行解决问题。
  • 我是编程小白,帮帮我BaseGod

标签: tkinter python-3.5 tkinter-canvas


【解决方案1】:

问题是这样的:

guess=self.user_input.get

您没有调用函数get,您只是将函数分配给变量。稍后您执行str(guess) 会导致字符串很长。

要解决此特定问题,请添加括号以将引用转换为函数调用:

guess=self.user_input.get()

【讨论】:

  • @bobby:这与这个问题无关。 stackoverflow 不是代码编写服务。如果您还有其他问题,请进行一些研究,进行一些调试,然后再问一个问题。
  • 对业余程序员更有礼貌。 stackoverflow 的意义何在
  • @bobby:如果我冒犯了你,我很抱歉。 Stackoverflow 不像其他支持扩展讨论的网站。它根本不是为扩展讨论而设计的。如果您还有其他问题要问,请单击“”按钮,人们将很乐意回答。如果您在评论中隐藏了额外的问题,则有可能没有人会看到它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-10
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多