使用 TkImages 创建引用列表的枚举

Create Enum referencing a list with TkImages

我在一个文件夹中有几张图片,每一张都调整了大小并变成了 Tkinter 的图片。我想在其他 python 脚本中将这些图像用作 enum.

这是我创建图像的方式:

import os
from PIL import Image, ImageTk
from enum import Enum

#Resize All Images and turn them into TkImages
def ResizeImages():
    PieceImages = []
    for images in os.listdir('Resources'):
        cImage = Image.open('Resources/' + images)
        cImage = cImage.resize((80, 80), Image.ANTIALIAS)
        PieceImages.append(ImageTk.PhotoImage(cImage))
    return PieceImages

#Called from outside to create PNGS list AFTER Tkinter.Tk() was called
def InitializeImages():
    global PNGS
    PNGS = ResizeImages()


#This is the part where I'm lost
class Black(Enum):
    global PNGS
    Queen = PNGS[3]
    King = PNGS[4]
    Tower = PNGS[5]

我想用这些图片创建一个 Tkinter Button

#PieceImages is the .py file above
import PieceImages import Black
form tkinter import *
root = Tk()
root.geometry('800x800')
someButton = tk.Button(root, image=Black.Tower).place(x=100, y=100)

我的问题是:
甚至可以创建这种类型的 enum 吗?如果可以,如何创建?

我建议远离全局变量;您可以直接将参数传递给 class:

class Black():
    def __init__(self, pngs):
        self.name1 = pngs[0]
        self.name2 = pngs[1]

通过传递 png 来实例化:

black = Black(pngs)

然后 black.name1black.name2 等将是您想要的图像。