I'm trying to show a picture using canvas or directly in the tab, but it doesn't work, it doesn't show an error but picture is not displayed, what am I doing wrong? I need to use a vertical scrollbar and add some widgets, I tried using canvas.create_image and labels but pictures aren't being showed This is my main code:
import tkinter as tk
from tkinter import ttk
from Listado import *
import os
class Gui(ttk.Frame):
def __init__(self):
self.db_filename = 'Tienda.db'
# Temp file
self.temp_dir = "temp"
dir_list = os.listdir("./")
for file in dir_list:
if file.lower() == "temp":
self.temp_dir = file
break
else:
self.temp_dir = "temp"
if not os.path.exists(self.temp_dir):
os.mkdir(self.temp_dir)
self.create_gui()
def create_gui(self):
self.main_window = tk.Tk()
self.main_window.attributes('-fullscreen', True)
self.screen_width = self.main_window.winfo_screenwidth()
self.screen_height = self.main_window.winfo_screenheight()
self.tabs = ttk.Notebook(self.main_window)
self.tab_admin = ttk.Frame(self.tabs)
self.tab_listado = ttk.Frame(self.tabs)
self.tab_carrito = ttk.Frame(self.tabs)
self.tab_ventas = ttk.Frame(self.tabs)
self.tab_login = ttk.Frame(self.tabs)
self.tabs.add(self.tab_admin, text ='Administrar')
self.tabs.add(self.tab_listado, text ='Ver listado')
self.tabs.add(self.tab_carrito, text ='Carrito')
self.tabs.add(self.tab_ventas, text ='Ventas')
self.tabs.add(self.tab_login, text ='Login')
self.listado = Listado(self)
self.tabs.pack(expand = 1, fill ="both")
self.main_window.mainloop()
if __name__ == "__main__":
Gui()
This is the file named "Listado"
import tkinter as tk
from tkinter import ttk
from tkinter import *
from tkinter import scrolledtext as st
from PIL import Image, ImageTk
class Listado:
def __init__(self,Gui):
self.create_gui(Gui)
def create_gui(self,Gui):
img = Image.open("laptop.png")
img = img.resize((100, 100), Image.ANTIALIAS)
img = ImageTk.PhotoImage(img)
container = ttk.Frame(Gui.tab_admin)
canvas = tk.Canvas(container)
scrollbar = ttk.Scrollbar(container, orient="vertical", command=canvas.yview)
scrollable_frame = ttk.Frame(canvas)
scrollable_frame.bind(
"<Configure>",
lambda e: canvas.configure(
scrollregion=canvas.bbox("all")
)
)
canvas.create_window((0, 0), window=scrollable_frame, anchor="nw")
canvas.configure(yscrollcommand=scrollbar.set)
for i in range(200):
ttk.Label(scrollable_frame, text="Sample scrolling label",image=img).pack()
container.pack(side="left",fill="both",expand=True)
canvas.pack(side="left", fill="both", expand=True)
scrollbar.pack(side="right", fill="y")
ttk.Label(scrollable_frame,image=img).pack()