Я очень плохо знаком с использованием python, и это мой первый год его изучения.Мне дали задание воссоздать игру жизни.Тем не менее, я столкнулся с проблемой создания сетки в графическом интерфейсе, в которой я хочу скопировать случайную генерацию массива.Где бы он ни был, я пытаюсь заставить квадрат стать зеленым, и всякий раз, когда обнаруживается ноль, он должен быть красным.Я изо всех сил пытаюсь понять, как связать графический интерфейс с массивом NumPy и как сделать так, чтобы они отображались как зеленые и нули, как красные.
Я знаю, что есть более эффективные способы кодирования игры жизни, но для этого проекта мне нужно создать версию, которую я сам придумал, и по этой причине я не ищурешение этой проблемы, а не пытаться переделать все это.
Ниже приведен код, который я написал.
Большое спасибо!
import tkinter as tk
import random
import numpy as np
from tkinter import *
a=int(input("enter x dimension of grid: "))
b=int(input("enter y dimension of grid: "))
new=np.random.randint(2, size=(a, b))
old=np.random.randint(2, size=(a, b))
#print(old)
#rules to be implemented here
print(new)
class Construction(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.canvas = tk.Canvas(self, width=500, height=500, borderwidth=0, highlightthickness=0)
self.canvas.pack(side="top", fill="both")
self.rows = 100
self.columns = 100
self.cellwidth = 25
self.cellheight = 25
self.rect = {}
for column in range(b):
for row in range(a):
x1 = column*self.cellwidth
y1 = row * self.cellheight
x2 = x1 + self.cellwidth
y2 = y1 + self.cellheight
self.rect[row,column] = self.canvas.create_rectangle(x1,y1,x2,y2, fill="red")
def change_colour(self):
for i in range([new], self.a):
for j in range([new], self.b):
if new[i,j] == 1:
self.rect[row,column] = self.canvas.create_rectangle(x1,y1,x2,y2, fill="green")
#root = Tk()
#def callback(self):
#canvas.itemconfig()
#b = Button(root, text="stop code", command=callback)
#b.pack()
if __name__ == "__main__":
app = Construction()
app.mainloop()