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
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),
...
}
然后,您可以轻松地遍历字典以创建图像。
推荐阅读
- laravel - Laravel Homestead 是否安装了 Nginx 或 Apache?
- ios - 快速更新键盘预测栏建议
- python - 如何为我的 __dict__ 属性推广此功能
- angular - 新 Ionic/Angular 应用程序的 tfignore 问题
- android - onResume() 更改菜单项出错
- c - execve /bin/bash 作为子进程。使用管道通过父进程与 bash 交互
- excel - 根据excel vba中的不同标准计算平均值
- google-cloud-platform - 对话框流中的错误 getaddrinfo ENOTFOUND
- r - 乳胶 R 块输出未修饰
- python - 如何通过随机搜索优化 SVM 的权重?