Python中的刽子手游戏(GUI)

2024-09-29 23:21:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个Hangman类和一个HangmanGUI类,这是我为python入门类做的最后一个项目。很抱歉,如果我犯了业余错误,但我没有很强的编程背景。每次我和我的合作伙伴运行GUI类时,都会出现以下错误:

    self.__letterVar.set(self.__ans.getAnswer())
TypeError: set() missing 1 required positional argument: 'value'

以下是刽子手课程:

^{pr2}$

在同一个文件夹里有几个名为水果、蔬菜和名字的文件,每个文件在各自的类别中有大约5-6个字母的单词。我想让程序打开并读取文件,然后从列表中随机抽取一个单词。在

我们测试了我们的hangman类,我们认为它运行良好,但我认为我们的问题源于我们的HangmanGUI类。在

from tkinter import *
from random import *
from hangman import *

FOUR = 4 
class HangmanUI(Frame):

  def __init__(self):
    Frame.__init__(self)
    self.master.title("Hangman")
    self.grid()
    self.__label = Label(self, text = "Let's play Hangman!")
    self.__label2 = Label(self, text = "Please choose a category!")
    self.__label2.grid(row = 1, column = 0)
    self.__buttonPane = Frame(self)
    self.__buttonPane.grid(row = 2, column = 0)
    # created a model of the hangman class
    self.__ans = Hangman()
    self.__fruitButton= Button(self.__buttonPane, text = 'Fruits', command =     self.startFruit)
    self.__nameButton = Button(self.__buttonPane, text = 'Names' , command = self.startName)
    self.__vegeButton = Button(self.__buttonPane, text = 'Veges', command = self.startVege)
    self.__fruitButton.grid(row = 2, column = 0)
    self.__vegeButton.grid(row = 2, column = 1)
    self.__nameButton.grid(row = 2, column = 2)
    self.__label.grid(row = 0 , column = 0)
    #to change later so if shuffles images 1-10 with each error (for loop)
    self.__image = PhotoImage(file = "0.gif")
    self.__imageLabel = Label(self, image = self.__image)
    self.__imageLabel.grid(row = 3, column = 0)
    self.__letterLabel = Label(self, text = "Please submit a letter to play!")
    # instead of the submit button, tried using enter instead for now
    self.__letterVar= StringVar
    #self.__letterEntry = Entry(self, textvariable = self.__letterVar) # commented out this line, maybe i shouldn't have?
    self.__letterEntry = Entry(self, width = 10)
    self.__letterEntry.bind('<Return>', self.set)
    self.__letterLabel.grid(row = 4, column = 0)
    self.__letterEntry.grid(row = 5, column = 0)

    self.__value = Label(self, textvariable = self.__letterVar)
    self.__value.grid(row= 6, column = 0)


    #creates nested frame 
    self.__letterPane = Frame(self)
    self.__letterPane.grid(row = 7, column = 0)
    self.__letter1 = Label(self.__letterPane, text = '_  _  _  _  _  _')
    self.__letter1.grid(row = 7, column = 0)
  def startFruit(self):
    self.__ans.startFruit()
  def startVege(self):
    self.__ans.startVege()
  def startName(self):
    self.__ans.startName()
  def set(self,event):
    guessWord = self.__ans.getTheWord()
    entryLetter = self.__letterEntry.get()
    self.__ans.find(guessWord, entryLetter)
    newValue = self.__letterEntry.get()
    self.__ans.set(newValue)
    # display new value in letterVar
    # this is where the program crashes
    self.__letterVar.set(self.__ans.getAnswer())
    # invoke delete() to clear entry box
    self.__letterEntry.delete(0,END)


def main():
  HangmanUI().mainloop()
main()

很抱歉代码太长了,这是我第一次在这里发帖,我们都很紧张,因为我们大学的最后一周,我们一直在努力把这篇文章拼在一起。我们都不是计算机科学专业的,所以这是一个相当困难的过程。在

我们不确定应该如何调用Hangman类并在GUI中使用来自Hangman类的方法。到目前为止,我们得到了我上面提到的错误,我们不确定如何才能修复它。在def set(self,event)处,程序在GUI类的末尾崩溃:

如果有人能提供任何见解和建议,将不胜感激!在


Tags: textselfvaluedefcolumnframelabelgrid

热门问题