我正在使用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')

这实际上是我正在制作的迷你闪存卡程序。 它在底部使用解释命令,并根据FlashCard类中的字典执行它们。 它基本上可以正常工作:它可以处理正确的文本对象。 但是,由于重新绘制,文本开始与其他文本对象重叠。 我尝试将.draw函数全部移开,但是它要么根本不出现,要么重叠。

有人有什么建议吗? 我希望该文本替换每个新的抽认卡问题。

谢谢!

===============>>#1 票数:0

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

例:

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

===============>>#2 票数:0

如果要使某些内容不可见,则需要使用undraw()命令。 我建议将其放在您的Continue语句之前。 就像

questionText.undraw()
questionAnswer.undraw()

另外,完成后,您可以使用del命令摆脱每个questionText / questionAnswer实例。 这可能是一个更好的选择,因为您实际上是在以这种方式释放内存,而不是存储数据并且不对其执行任何操作。

  ask by Zack Tanner translate from so

未解决问题?本站智能推荐:

1回复

Zelle Graphics动画

我正在使用zelle图形在python中制作轮盘赌的简单程序。 我有下面的代码,我试图在两个圆圈(轨道)之间移动球。 有没有办法做到这一点。 我的想法是取消绘制(ball.undraw())并在.10秒的时间间隔(time.sleep(.10))中再次绘制它,但我不知道该如何进行数学计算,
2回复

python zelle graphics checkMouse()?

嘿,有一个简短的问题可能很明显,但是我真的很困惑。 因此,我正在编写一个程序(游戏),要求您在yes_box的框内单击(如上所示)。 我需要编写一个函数来检查鼠标单击是否在矩形的边界内,如果是,则返回“ y”,如果不是,则返回“ n”。 我知道您需要使用win.getMouse()和
1回复

识别用户何时单击带有Zelle图形的圆圈时出现问题

我正在使用Zelle图形包在Python中创建一个程序。 用户单击有一个移动的圆圈,以使其返回屏幕中心。 我无法弄清楚如何识别用户何时在圆圈内单击。 这是我编写的代码: 我遇到的主要问题是识别鼠标单击的坐标。 我在Zelle图形包中找不到任何能说明这一点的内容。
1回复

Python Zelle图形-图像错误

我使用Mac,试图将程序的背景设置为我下载的图像,我将该图像称为“ ChristmasBackground.jpg”并将其保存到我的文档中。 使用Zelle图形,这是我写的: 但是程序给我一个错误,说:
1回复

如何使用Zelle图形绘制绘图?

这是使用John Zelle的graphics.py Python 3.5.2的代码问题: 我花了很多时间在这里寻找答案,但无法弄清楚。 函数undraw()就像getMouse()一样存在。 但是似乎对plot()命令不起作用,仅对draw()命令起作用。 我究竟做错了什么? 我
1回复

如何undraw()已在Zelle Graphics中绘制的形状

我已经开始学习Python(Zelle Graphics),并且正在尝试制作老虎机。 使用我预先定义的功能,我设法在while循环中将形状绘制到老虎机中。 当用户单击“旋转!”时,我需要重置( undraw() )它们。 按钮,但是由于形状是随机选择的,因此不会将每个随机生成的形状分配
3回复

在Python Zelle Graphics中从窗口中删除一行

我下面有一些代码可以在圆上画线,但是这些线不会在每次迭代中删除。 有谁知道如何从窗口中删除对象? 我尝试了win.delete(l)但是没有用。 谢谢。
1回复

在Zelle的图形中创建一个按钮(从图像)

我有一个开始按钮图像,试图将其转换为程序中的按钮。 但是,我认为我做错了数学或显然有错,因为它不起作用。 基本上,我要尝试的是如果该人单击该按钮,它将启动一个if语句。 有任何想法吗? 提前致谢! startImage是我要创建按钮的图像。 hour是其他代码中声明的变量。
1回复

在Python Zelle图形中实现多线程

我正在创建一个使用Zelle的graphics.py在窗口中打开世界地图的程序。 它具有一个在地图上绘制点的功能,另一个功能是在屏幕上显示这些点1秒钟后将其取消绘制(绘制后存储在列表中)。 我希望这些函数可以同时工作,但是当在线程中调用addDots()函数时,它不会在窗口中绘制点,而只是停
1回复

在Python Zelle图形窗口中打印变化的变量

我已经在Python中使用Zelle图形创建了一个窗口,并希望打印每次迭代后都会改变的变量的值。 这是我的代码: 您可以看到,每次迭代后,数组的颜色都会发生变化,并且数组的尺寸(我的代码中的可dim )将减少一个单位。 现在,我想在窗口中打印正确的尺寸。 尽管颜色在每次迭代后都