esencialmente, este fragmento de código me da una imagen, me gustaría hacerlo de alguna manera para que la imagen se repita en un formato de cuadrícula según la cantidad de columnas que definí. ¿Cómo haría esto usando un bucle for?
fragmento de código:
canvas = Canvas(row, width = ncols*square_width, height = ncols*square_height,
bg = bg_color, bd=0, highlightthickness=0, relief='ridge')
canvas.create_image(0, 0, image = im_Empty, anchor = 'nw')
canvas.update()
canvas.pack()
Solución del problema
Recomendaría simplemente crear un marco y luego colocar estos lienzos en el marco usando la cuadrícula integrada(), a continuación hay un ejemplo funcional de un programa que crea una cuadrícula de lienzos de 5 por 5 usando su función de creación de lienzos (con algunos cambios ):
import tkinter as tk
from tkinter import ttk
def createCanvas(frame,nrow,ncolumn):
ncols = 5
square_width = 5
square_height = 5
bg_color = "red"
im_Empty = tk.PhotoImage(file="gifsample.gif")
canvas = tk.Canvas(frame, width = ncols*square_width, height = ncols*square_height, \
bg = bg_color, bd=0, highlightthickness=0, relief='ridge')
canvas.create_image(0, 0, image = im_Empty, anchor = 'nw')
canvas.update()
canvas.grid(row = nrow, column = ncolumn, sticky = "nsew")
return canvas
root = tk.Tk()
frame = tk.Frame(root)
frame.grid(row = 0, column = 0, sticky = "nsew")
frame.grid_rowconfigure(0, weight=1)
frame.grid_columnconfigure(0, weight=1)
canvases = dict()
columns = 5
rows = 6
for i in range(rows):
for j in range(columns):
canvases[str(i)+","+str(j)] = createCanvas(frame,i,j)
frame.grid_rowconfigure(i, weight=1)
frame.grid_columnconfigure(j, weight=1)
print(canvases)
root.mainloop()
Tenga en cuenta que creé un diccionario como contenedor para estos lienzos cuadriculados, ya que es posible que desee mantener las referencias almacenadas, pero técnicamente hablando, también puede crear los lienzos sin el dictado.
Además, para mí, la imagen no apareció, pero te dejaré la depuración, ya que no era realmente lo que estabas preguntando.
No hay comentarios:
Publicar un comentario