Witam,
Chciałem zrobić przewijaną listę obrazów w tkinter, gdzie każdy obraz jest generowany ze strony pliku pdf. Obrazy ImageTk.PhotoImage ładuję na ttk.Label i później ten obiekt próbuję ładować na tk.Canvas.
def __showPDFPreview(self) -> None:
y: int = 0
for page in self.__pdfHandler:
photoLabel: ttk.Label = ttk.Label(self.__canvas, image=page)
self.__canvas.create_window(100, y, window=photoLabel, anchor="nw")
y += 150
scroll: ttk.Scrollbar = ttk.Scrollbar(self.__canvas, orient=tk.VERTICAL, command=self.__canvas.yview)
scroll.pack(side=tk.RIGHT, fill=tk.Y)
self.__canvas.config(yscrollcommand=scroll.set, scrollregion=(0, 0, 0, y))
Sam plik pdfa odczytuję za pomocą biblioteki fitz, a konwersja na zdjęcie wygląda następująco:
def __convertPageToImage(self, item: int) -> ImageTk.PhotoImage:
page: fitz.Page = self.__pdfObjShow.load_page(item)
pix: fitz.Pixmap = page.get_pixmap()
img: Image = Image.frombytes('RGB', (pix.width, pix.height), pix.samples)
# img.show()
return ImageTk.PhotoImage(img)
Jednak z jakiegoś powodu obrazy te nie pojawiają się na tk.Canvas. Obiekty ttk.Label znajdują się jako dzieci tk.Canvas ale obrazu brak.