[英]Tkinter Multiple Image Viewer within Frame
我想為照片預覽器制作 window 結構。 我被困住了。 我的代碼不起作用。 我制作了如下所示的框架層次結構。 我想在縮略圖框中顯示縮略圖。
# TODO 0: IMPORT REQUIRED LIBRARIES AND MODULES
from tkinter import *
from PIL import Image, ImageTk
# TODO 1: CREATE A CLASS
class EditScreen:
def __init__(self, file_directory_list):
self.edit_window_init()
self.file_directory_list = file_directory_list
self.display_selected_images()
self.edit_window.mainloop()
# TODO 2: CREATE A NEW EDIT SCREEN
def edit_window_init(self):
self.edit_window = Toplevel()
self.edit_window.title("Edit")
self.edit_window.geometry('1200x800')
self.background_color = "#F8F1F1"
self.my_font_color = "#0A065D"
self.my_font = 'Poppins'
# TODO 3: DISPLAY SELECTED IMAGES IN THIS SCREEN
def display_selected_images(self):
thumbnail_frame = Frame(self.edit_window, height=1200, width=300)
thumbnail_frame.pack(side='left')
thumbnail_frame_canvas= Canvas(master=thumbnail_frame)
thumbnail_frame_canvas.place(x=0,y=0)
# TODO 3.1: PUT ALL SELECTED IMAGES THUMBNAIL TO LEFT HAND SIDE OF THE EDIT SCREEN
for selected_image_directory in self.file_directory_list:
print(self.file_directory_list.index(selected_image_directory))
selected_image = ImageTk.PhotoImage(file=selected_image_directory)
selected_image_location = thumbnail_frame_canvas.create_image((30,30),image=selected_image)
selected_image_location.pack()
#.grid(row=self.file_directory_list.index(selected_image_directory),column=0)
考慮這些代碼行:
selected_image_location = thumbnail_frame_canvas.create_image((30,30),image=selected_image)
selected_image_location.pack()
create_image
記錄為返回 integer,它是創建的 canvas object 的內部 id。 然后,您嘗試在 integer 上調用pack
,但整數沒有pack
方法。 您需要刪除對pack
的調用
在對您的問題的評論中提到了另一個問題: 您沒有保存對 image 的引用,因此它將被 python 的垃圾收集器破壞。
您可以使用全局列表保存參考,並將圖像附加到該列表:
def display_selected_images(self):
global selected_images
...
selected_images = []
for selected_image_directory in self.file_directory_list:
...
selected_image = ImageTk.PhotoImage(file=selected_image_directory)
selected_images.append(selected_image)
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.