我正在尝试使用 numpy、matplotlib 和 tkinter 创建生命游戏。我打算首先询问用户游戏板上的行数和列数,以及一个单元格存活的概率。输入这些信息后,用户将按下“生成”按钮开始游戏。但是,无论何时按下按钮,都会弹出错误:“AttributeError: 'numpy.ndarray' object has no attribute 'set_canvas'”。我不知道为什么 FigureCanvasTkAgg 不能绘制一个 numpy 矩阵。有没有什么方法可以在 tkinter 窗口中绘制一个 numpy 矩阵?这是我的代码:
from tkinter import *
import numpy as np
import matplotlib.pyplot as plt
from board import Board
from PIL import Image, ImageTk
from matplotlib.backends.backend_tkagg import (
FigureCanvasTkAgg, NavigationToolbar2Tk)
def num():
n1 = int(t1.get())
n2 = int(t2.get())
n3 = int(t3.get()) / 100.00
initBoard = np.zeros((n1, n2))
for row in range(0,n1):
for column in range(0,n2):
initBoard[row][column] = np.random.choice(np.arange(0, 2), p = [1 - n3, n3])
#game_board = Board(n1, n2, initBoard)
canvas = FigureCanvasTkAgg(initBoard, master=root) # A tk.DrawingArea.
canvas.draw()
canvas.get_tk_widget().grid(row = 4, column = 0)
root.quit()
root = Tk()
root.title('Game of Life')
root.geometry('800x600')
Label(root, text="How many rows?: ").grid(row = 0)
Label(root, text="How many columns?: ").grid(row = 1)
Label(root, text="Probability of spawn (between 0 and 100): ").grid(row = 2)
t1 = Entry(root)
t2 = Entry(root)
t3 = Entry(root)
t1.grid(row = 0, column = 1)
t2.grid(row = 1, column = 1)
t3.grid(row = 2, column = 1)
Button(root, text = 'Generate', command = num).grid(row = 3, column = 1, sticky = W, pady = 4)
fig= plt.figure()
canvas = FigureCanvasTkAgg(fig, master=root) # A tk.DrawingArea.
canvas.draw()
canvas.get_tk_widget().grid(row = 4, column = 0)
mainloop()
鸿蒙传说
相关分类