首页 > 解决方案 > 创建多个 Tkinter 画布图像的最佳方法?

问题描述

在我的程序中,我在画布上创建了许多图像,但是,我觉得我目前的做法是低效且重复的。这是程序的基本结构:

import tkinter as tk
from PIL import Image, ImageTk

CANVAS_IMG = ['image1', 'image2', 'image3', 'image4']

class MyApp:
    def __init__(self, parent):
        self.parent = parent
        self.canvas_img = {item: ImageTk.PhotoImage(file=f'img/{item}.png') for item in CANVAS_IMG}

        self.canvas.create_image(485, 370, image=self.canvas_img['image1'])
        self.canvas.create_image(490, 360, image=self.canvas_img['image2'])
        self.canvas.create_image(350, 55, image=self.canvas_img['image3'])
        self.canvas.create_image(720, 375, image=self.canvas_img['image4'])

if __name__ == '__main__':
    root = tk.Tk()
    MyApp(root)
    root.mainloop()

图像的坐标不遵循任何类型的模式。

我曾考虑过创建一个元组列表来存储图像的坐标,但这似乎有点笨拙。你会推荐什么作为最好的方法来做到这一点?

标签: pythontkinter

解决方案


一种方法是创建一个字典,其中键是图像名称,值是坐标:

IMAGE_DATA = {
    "image1": (485, 370),
    "image2": (490, 360),
    ...
}

然后,您可以轻松地遍历字典以创建图像。


推荐阅读