1

我在 Python 中使用 Zelle 图形创建了一个窗口,并希望打印一个变量的值,该变量在每次迭代后都会发生变化。这是我的代码:

from graphics import *
import random
from time import sleep

def myWindow(dim,Array,win):


    for j in range (dim):
        rec = Rectangle(Point(5+j, 10), Point(6 + j, 11))
        rec.setFill("white")
        rec.draw(win)    
        Array.append(rec)

    label = "Dimension =", dim
    text = Text(Point(10,8), label)
    text.draw(win) 


def main():
    dim = 10
    Array = []
    win = GraphWin("Game of Life", 400, 400)
    win. setCoords(0, 0, 20, 20)

    myWindow(dim,Array,win)


    for i in range (10):
        sleep(1)
        dim = dim - i - 1
        Array[i].setFill("Black")

    sleep(5)    

main() 

您可以看到每次迭代后数组颜色都会发生变化,并且数组的维度(dim在我的代码中是变量)减少了一个单位。现在我想在窗口中打印正确的尺寸。

我的代码不会更改图形窗口中尺寸的值,尽管每次迭代后颜色都会发生变化。

为什么变量的显示值dim没有变化?我如何实现这一目标?

4

1 回答 1

0

您需要调用text.setText("...")以更新标签的内容。我在下面相应地修改了您的代码:

from time import sleep
from graphics import *

def myWindow(dim, array, win):

    for j in range(dim):
        rec = Rectangle(Point(5 + j, 10), Point(6 + j, 11))
        rec.setFill("white")
        rec.draw(win)
        array.append(rec)

    label = "Dimension = {}".format(dim)
    text = Text(Point(10, 8), label)
    text.draw(win)

    return text

def main():
    dim = 10
    array = []
    win = GraphWin("Game of Life", 400, 400)
    win.setCoords(0, 0, 20, 20)

    text = myWindow(dim, array, win)

    for i in range(10):
        sleep(1)
        dim = dim - i - 1
        array[i].setFill("Black")
        text.setText("Dimension = {}".format(dim))

    win.getMouse()
    win.close()

main()

dim变量在您的代码中的行为方式与您在文本中描述的方式不同,但无论如何 - 它的当前值正在显示,您可以根据需要对其进行调整。

于 2017-07-25T06:38:01.567 回答