当我有空闲时间工作时,我正在使用python(2.6),我想我会尝试创建一个game of life。为了这个目的,我想为不同的单元格创建一个类,它将在画布上绘制,就像矩形一样,但会有更多的属性,比如它们是活着的还是死的等等。
我看到tkinter库中的canvas模块有一个矩形类,但它说这个模块已经过时了,在tkinter模块本身,我能找到的只是一个与矩形有关的函数
我错过了什么......是否有可能使用矩形作为父类......(也许我在尝试制作类的单元格实例时完全错误;仍然只是我只是开始进入编程我想尝试使它像经验那样)
答案 0 :(得分:1)
没有可用作父类的矩形类。但是,您可以创建自己的类,只需几行代码即可表示一个矩形。
例如:
class Rectangle(object):
def __init__(self, canvas, coords, fill, outline=None):
self.canvas = canvas
self.outline = outline if outline is not None else fill
self.fill = fill
self.canvas_id = self.canvas.create_rectangle(
coords, outline=self.outline, fill=self.fill)
你可以像这样使用它:
canvas = tk.Canvas(...)
r1 = Rectangle(canvas, (50,50, 150, 150), "red")
r2 = Rectangle(canvas, (100, 50, 150, 150), "green")
...
然后你可以创建一个名为Cell
的子类,它取一行和一列而不是实际的x / y坐标,并且有一个方法set_state
来改变颜色:
class Cell(Rectangle):
def __init__(self, canvas, row, column):
# make a 50x50 rectangle in the given row, column
x0 = column * 50
y0 = row * 50
x1 = x0 + 50
y1 = y0 + 50
self.state = None
super(Cell, self).__init__(canvas, (x0, y0, x1, y1), "gray")
def set_state(self, state):
self.state = state
color = "green" if state == "alive" else "red"
self.canvas.itemconfigure(self.canvas_id, fill=color, outline=color)
您可以这样使用它:
# place a cell at row zero, column zero, and
# set its state to "alive"
cell = Cell(canvas, 0, 0)
cell.set_state("alive")