Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将python hangman转换为GUI_Python_Python 3.x_Tkinter_Python Requests_Subprocess - Fatal编程技术网

将python hangman转换为GUI

将python hangman转换为GUI,python,python-3.x,tkinter,python-requests,subprocess,Python,Python 3.x,Tkinter,Python Requests,Subprocess,我正在和我们的项目一起创造猜词。但是我对应该添加到labelGuessResult上的循环和字母有一个问题。请帮助我解决我的代码,并帮助我了解我的代码有什么问题。我希望得到的结果是在labelGuessResult中显示正确的猜测字母,每次我输入正确的猜测,它都会像下面这样添加 from tkinter import * import tkinter.messagebox from random import choice randomWords = choice(["yeti", "siren

我正在和我们的项目一起创造猜词。但是我对应该添加到
labelGuessResult
上的循环和字母有一个问题。请帮助我解决我的代码,并帮助我了解我的代码有什么问题。我希望得到的结果是在
labelGuessResult
中显示正确的猜测字母,每次我输入正确的猜测,它都会像下面这样添加

from tkinter import *
import tkinter.messagebox
from random import choice
randomWords = choice(["yeti", "siren", "lich"])
lives = 7
guessedWord = []
guessedWrong = []

#defining the main class
class window(Frame):
#defining main window initialization
def __init__(self, master=None):

    Frame.__init__(self, master)
    self.master = master
    self.init_window()

#defining main frame
def init_window(self):

    self.master.title("H A N G M A N")
    self.master.resizable(False, False)
    self.pack(fill=BOTH, expand=1)


    self.label1 = Label(self, text="Guessed the %s letter word: " % (len(randomWords)))
    self.label1.grid(row=1, column=1, ipadx=5, ipady=5, sticky=W)

    '''DISPLAY WORD'''
    self.labelGuessResult = Label(self, text=len(randomWords)* " _")
    self.labelGuessResult.grid(row=1, column=2)

    '''GUESS INPUT'''
    self.guessEnt = Entry(self)
    self.guessEnt.grid(row=1, column=3)
    guess = self.guessEnt.get()


    self.label2 = Label(self, text="Message: ")
    self.label2.grid(row=2, column=1, ipadx=5, ipady=5, sticky=W)
    self.labelMessage = Label(self, text=guessedWord + guessedWrong)
    self.labelMessage.grid(row=2, column=2)

    self.label3 = Label(self, text="Guessed Letters: ")
    self.label3.grid(row=3, column=1, ipadx=5, ipady=5, sticky=W)
    self.lblGuessed = Label(self, text=guessedWord)
    self.lblGuessed.grid(row=3, column=2)

    self.label4 = Label(self, text="Lives left: ")
    self.label4.grid(row=4, column=1, ipadx=5, ipady=5, sticky=W)
    self.lblLives = Label(self, text=lives)
    self.lblLives.grid(row=4, column=2)

    def checkWord():
        while True:
            out = ""
            for letter in randomWords:
                if letter in guessedWord:
                    self.labelGuessResult.config(text=out+letter)
                else:
                    self.labelGuessResult.config(text=out+" _")
            if out == randomWords:
                self.labelMessage.config("You have guesed the ", randomWords)
                break
            if guess in guessedWord:
                self.labelMessage.config(text="already guessed that!")
            elif guess in randomWords:
                self.labelMessage.config(text="correct!")
                guessedWord.append(guess)
            else:
                self.labelMessage.config(text="Wrong!")
                guessedWrong.append(guess)
            print()

    '''BUTTON GUESS'''
    self.submitBTN = Button(self, text="Guess", command=checkWord)
    self.submitBTN.grid(row=1,column=4)


frames = Tk()              #creates the frame
frames.geometry("500x450") #sets frame size
app = window(frames)       #calls and runs the frame within the class
frames.mainloop()          #runs the frame continuously

一个主要问题是
checkWord()
函数。第一次调用这个函数时,它启动了一个循环,我很难理解这个循环,而且似乎没有结束

这意味着一旦调用
checkWord()
,您将无法在条目中输入更多的字母

我的建议是,您首先制作一个猜测和检查过程的流程图,然后在检查您是否得到正确的返回时一点一点地执行它。首先,跳过GUI可能更简单,因为它只会增加复杂性,直到您让它开始工作