The example displays three frames with identcal contents. I need to loop through an arbitrary number of different data sets: (img_file, name and color)
{
import tkinter as tk
from tkinter import *
from tkinter import ttk
from PIL import Image, ImageTk
class TestFrame(tk.Frame):
def __init__(self):
super().__init__()
image = Image.open(img_file)
stamp = ImageTk.PhotoImage(image)
labelImage = ttk.Label(self, image=stamp)
labelImage.grid(row=0, column=0, rowspan=3)
labelImage.image = stamp
ttk.Label(self, text=name).grid(row=3, column=0)
ttk.Label(self, text=color).grid(row=1, column=2)
ttk.Label(self, text='Value: ').grid(row=0, column=1)
ttk.Label(self, text='Color: ').grid(row=1, column=1)
ttk.Label(self, text='Size: ').grid(row=2, column=1)
class TestMainApplication(tk.Tk):
def __init__(self):
super().__init__()
self.title("Test Application")
self.testFrame1 = TestFrame()
self.testFrame2 = TestFrame()
self.testFrame3 = TestFrame()
self.testFrame1.grid(row=0, column=0, rowspan=3, columnspan=3, sticky='nsew')
self.testFrame2.grid(row=3, column=0, rowspan=3, columnspan=3, sticky='nsew')
self.testFrame3.grid(row=0, column=3, rowspan=2, columnspan=3, sticky='nsew')
img_file = 'myfile.jpg'
name = 'Flying Post Horn'
color = 'Orange Brown'
if __name__ == "__main__":
TestMainApplication().mainloop()
}
The frame gridding "self.testFrame1.grid(row=0, column=0, rowspan=3, columnspan=3, sticky='nsew')" should be controlled by variables, e.g. row=r and column=c The difficulty is in my view on how to pass necessary information between classes.