import cv2 as cv
import tkinter as tk
from tkinter import ttk
from MakeImageList import *
from PIL import Image,ImageTk
class mainFrameClass(tk.Tk):
def __init__(self,*args, **kwargs) :
tk.Tk.__init__(self, *args, **kwargs)
container = tk.Frame(self)
container.pack(side='top', fill= 'both', expand=True)
container.grid_rowconfigure(0, weight = 1)
container.grid_columnconfigure(0, weight = 1)
self.frames = {}
self.shared_data ={"image_number":"pyimage1"}
for F in (StartPage,Vizualizator,Filtre,Procesare):
frame = F(container,self)
self.frames[F] = frame
frame.grid(row = 0, column = 0, sticky ="nsew")
self.show_frame(StartPage)
def show_frame(self, cont,**kwargs):
frame = self.frames[cont]
frame.tkraise()
self.shared_data.update(kwargs)
class StartPage(tk.Frame):
def __init__(self,parent,controller):
tk.Frame.__init__(self, parent)
label = ttk.Label(self, text="Pagina de start")
label.grid(row = 0, column = 4, padx = 10, pady = 10)
button1 = ttk.Button(self, text ="Vizualizator",command = lambda : controller.show_frame(Vizualizator))
button1.grid(row = 1, column = 1, padx = 10, pady = 10)
button3 = ttk.Button(self, text ="Procesare Imagini",command = lambda : controller.show_frame(Procesare))
button3.grid(row = 3, column = 1, padx = 10, pady = 10)
class Filtre(tk.Frame):
def __init__(self, parent,controller):
tk.Frame.__init__(self, parent)
image_dump = controller.shared_data["image_number"]
self.imageLabel=ttk.Label(self,image= image_dump)
self.imageLabel.grid(row=3,column=1,columnspan=5)
button1 = ttk.Button(self, text ="Inapoi",command = lambda : controller.show_frame(Vizualizator))
button1.grid(row = 1,column = 1,padx = 10,pady =10)
class Procesare(tk.Frame):
def __init__(self, parent,controller):
tk.Frame.__init__(self, parent)
label = ttk.Label(self, text ="Procesare Imagini")
label.grid(row = 0, column = 4, padx = 10, pady = 10)
button1 = ttk.Button(self, text ="Pagina de Start",command = lambda : controller.show_frame(StartPage))
button1.grid(row = 1,column = 1,padx = 10,pady =10)
#no further updates
class Vizualizator(tk.Frame):
def __init__(self, parent,controller):
tk.Frame.__init__(self, parent)
image_list = MakeImageList()
myLabel =ttk.Label(self,image=image_list[0])
myLabel.grid(row=3,column=1,columnspan=5)
def forward(image_number,myLabel):
myLabel.grid_forget()
myLabel = ttk.Label(self,image=image_list[image_number-1])
button2 = ttk.Button(self, text=">>>",command=lambda:forward(image_number+1,myLabel))
if image_number == 3:
button2 =ttk.Button(self,text=">>>",state=DISABLED)
button2.grid(row = 1,column = 5,padx=10,pady=10)
button4 = ttk.Button(self,text="Filtre",command= lambda:show_filtre(image_number))
button4.grid(row= 1,column=4,padx=10,pady=10)
button3 = ttk.Button(self, text="<<<",command=lambda:backward(image_number-1,myLabel))
button3.grid(row = 1,column = 3,padx=10,pady=10)
myLabel.grid(row=3,column=1,columnspan=5)
def backward(image_number,myLabel):
myLabel.grid_forget()
myLabel = ttk.Label(self,image=image_list[image_number-1])
button2 = ttk.Button(self, text=">>>",command=lambda:forward(image_number+1,myLabel))
button2.grid(row = 1,column = 5,padx=10,pady=10)
button4 = ttk.Button(self,text="Filtre",command= lambda:show_filtre(image_number))
button4.grid(row= 1,column=4,padx=10,pady=10)
button3 = ttk.Button(self, text="<<<",command=lambda:backward(image_number-1,myLabel))
if image_number == 1:
button3 =ttk.Button(self,text="<<<",state=DISABLED)
button3.grid(row = 1,column = 3,padx=10,pady=10)
myLabel.grid(row=3,column=1,columnspan=5)
def show_filtre(current_image_number):
controller.shared_data["image_number"] = image_list[current_image_number-1]
controller.show_frame(Filtre)
button1 = ttk.Button(self, text ="Pagina de Start",command = lambda : controller.show_frame(StartPage))
button1.grid(row = 1,column = 1,padx = 10,pady =10)
button2 = ttk.Button(self,text = ">>>",command = lambda :forward(2,myLabel))
button2.grid(row = 1,column = 5,padx=10,pady=10)
button4 = ttk.Button(self,text="Filtre",command= lambda:show_filtre(1))
button4.grid(row= 1,column=4,padx=10,pady=10)
button3 = ttk.Button(self,text = "<<<",state=DISABLED)
button3.grid(row = 1,column = 3,padx=10,pady=10)
app = mainFrameClass()
app.mainloop()
I tried to make a shared_content dict. but I have to update the frame and the after() function doesn't work
In order to update the image inside
Filtrepage whenever the page is raised, one of the ways is to overload thetkraise()function: