Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建多个Tkinter画布图像的最佳方法?_Python_Tkinter - Fatal编程技术网

Python 创建多个Tkinter画布图像的最佳方法?

Python 创建多个Tkinter画布图像的最佳方法?,python,tkinter,Python,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 se

在我的程序中,我在画布上创建了许多图像,但是,我觉得我目前的做法效率低下,而且重复性很强。以下是该计划的基本结构:

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()
图像的坐标不遵循任何类型的模式


我曾考虑过创建一个元组列表来存储图像的坐标,但这似乎有点笨拙。您认为最好的方法是什么?

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

IMAGE_DATA = {
    "image1": (485, 370),
    "image2": (490, 360),
    ...
}
然后,您可以轻松地在字典上循环创建图像