如何使用Zelle的graphics.py更改帧但仍使用相同的窗口?

时间:2017-05-17 00:22:20

标签: python

我也是如此坚持这一点并且现在变得非常绝望..我们必须使用graphics.py库创建一个迷你程序。所以基本上我想知道的是我怎么能有一个开始菜单,然后当用户点击它时,它会改变为游戏的另一个框架'基本上??

我的朋友建议使用.undraw()功能,但我认为这不适用于文字&也只是将.setText("")更改为空字符串,因为我试图摆脱标题&副标题......这是我的代码:

from graphics import *
# create the window to hold the contents
win = GraphWin("SHAPES FRENZY", 800, 500)
win.setBackground("Black")
#Setting the Title Page:
title=Text(Point(400,250),"Shapes Frenzy.")
title.draw(win)
#Subheading
subheading=Text(Point(400,290), "Click anywhere to continue.")
subheading.draw(win)

#Next Frame
clickPoint = win.getMouse()
if clickPoint == True:
    title.undraw() #THIS DOESNT WORK.
    subheading.undraw()

#Setting up Second frame of program.
hi=Text(Point(500,250),"Please Work.")
hi.setFace('courier')
hi.draw(win)

win.getMouse() # Pause to view result
win.close()    # Close window when done

1 个答案:

答案 0 :(得分:0)

不要担心 - 呼吸:)

win.getMouse()并不像你想象的那样工作。你想要的是这样的:

clickPoint = win.getMouse()
title.setText("")  #THIS DOESNT WORK.
subheading.setText("")

win.getMouse()将返回Point个对象。以下是库中的剥离定义:

def getMouse(self):
    """Wait for mouse click and return Point object representing
    the click"""
    # gets some stuff ready
    while self.mouseX == None or self.mouseY == None:
        # waits for click
    # post click code
    return Point(x,y)

doc字符串确实说明了这一切..但基本上win.getMouse()将阻止你的程序,因为它将在while循环内运行,直到注册了一个点击。最后,请注意返回Point(x,y)

出了什么问题是......

您正在将win.getMouse的输出win.getMouse()分配给变量。此变量的值如下所示:Point(161.0, 247.0)。所以当它达到你的if表达式时。 Python正在检查Point(161.0, 247.0) == True。好吧,显然它没有!所以,发生了什么事情,如果阻止永远不会被执行,你尝试过的setText从未在第一时间运行。

为了将来的调试,请尝试添加print语句,以确保在您认为代码执行时执行代码:)。 E.g。

print("this will definitely print")
if clickPoint == True:
    print("Code is being run!")
    title.undraw() #THIS DOESNT WORK.
    subheading.undraw()

您会注意到,在您的程序输出中,第二个打印语句从未发生过。

另外,如果你打开图形库(它很小,所以不是太大的交易)并看看Text对象,你会发现没有{{1为undraw类定义的方法。有一个Text方法可用,所以我继续使用该方法并将文本设置为空字符串。

啊,最后一件事。由于你setText语句的目标只是保持你的程序,直到用户点击任何地方,并且getMouse方法仍然这样做(陷入while循环直到发生点击),正确的做法是放弃完全是if语句。

祝你好运!