Zelle图形界面问题



我正在使用Zelle图形库,我在替换图形对象(在这种情况下,恰好是文本对象)时遇到了麻烦。

代码如下:

from Graphics import *
winName = "Window"
win = Window(winName,600,500)
win.setBackground(Color('silver'))

title = Text((300,20),"Zack's Flash Card Maker")
title.draw(win)
p1 = Rectangle((50, 100),(550,400))
p1.setFill(Color("black"))
p1.draw(win)


class FlashCard:
    def __init__(self):
        self.commands = {'addQuestion':self.addQuestion,'startGame':self.startGame}
        self.stack = []
        self.questions = {}
        self.questionAnswered = False
        self.questionsCorrect = 0
        self.questionsIncorrect = 0
    def addQuestion(self):
        question = ' '.join(self.stack)
        self.stack = []
        answer = input(question)
        self.questions[question] = answer
    def startGame(self):
        for question in self.questions:
            if(self.questionAnswered == False):
                answer=input(question)
                questionText = Text((300,150),question)
                questionText.setFill(Color("white"))
                questionText.draw(win)
                if(answer == self.questions[question]):
                    questionAnswer = Text((300,200),answer + " is correct!")
                    questionAnswer.setFill(Color("green"))
                    questionAnswer.draw(win)
                    self.questionsCorrect = self.questionsCorrect + 1

                    continue
                else:
                    questionAnswer = Text((300,200),answer + " is incorrect. Study this one.")
                    questionAnswer.setFill(Color("red"))
                    questionAnswer.draw(win)
                    self.questionsIncorrect = self.questionsIncorrect + 1
                    continue


    def interpret(self,expression):
        for token in expression.split():
            if token in self.commands:
                operator = self.commands[token]
                operator()
            else:
                self.stack.append(token)

i = FlashCard()
i.interpret('What is your dog's name? addQuestion')
i.interpret('What is your favorite thing to do? addQuestion')
i.interpret('startGame')

这实际上是我正在制作的一个迷你闪存卡程序。它接受底部的explain命令,并根据FlashCard类中的字典执行这些命令。它基本上工作:它做正确的文本对象。然而,文本开始重叠其他文本对象,因为它重新绘制。我试过移动。draw函数,但它要么根本不出现,要么重叠。

谁有什么建议?我想为每个新的抽认卡问题替换文本。

谢谢!

如果您想使某些内容不可见,则需要使用undraw()命令。我建议你把它放在继续语句之前。就像

一样
questionText.undraw()
questionAnswer.undraw()

或者,您可以使用del命令在完成后删除每个questionText/questionAnswer实例。这可能是一个更好的选择,因为你实际上是在释放内存,而不是存储数据而不做任何事情。

您可以使用setText方法更改文本。

的例子:

string = Text(Point(1, 1), 'original string') 
sting.setText('new string')

最新更新