图像查看器/按钮图像

2024-09-29 00:21:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试实现简单的图像查看器,您可以从2张图片中进行选择。我有一个菜单按钮提供这些图片。选择其中一个图像后,程序将创建3个或5个按钮。我想在每个按钮上附加不同的图像,所以第一个按钮有一个图像,第二个按钮有另一个图像,依此类推。我已经用for循环创建了一个函数来创建这些按钮,但不能从这一点继续。我可以将一个图像附加到所有图像中,但不能用不同的图像逐个执行。 谢谢你的帮助

try:
    import Tkinter as tk
except ImportError:
    import tkinter as tk 

from functools import partial
from PIL import Image, ImageTk

class Halabala():
    def __init__(self):
        self.master = tk.Tk()
        self.master.geometry("1100x700")

        self.lists_labels = []

        self.rbutton = tk.Menubutton(self.master, text = "Choose picture")
        self.picks2 = tk.Menu(self.rbutton)
        self.rbutton.config(menu=self.picks2)
        self.picks2.add_command(label = "Spider", command = partial(self.create_labels,3))
        self.picks2.add_command(label = "Sugar", command = partial(self.create_labels,5))
        self.rbutton.config(width = 30, bg = "white", bd = 5, relief = tk.RAISED)
        self.rbutton.place(x = 900, y = 30)

        self.master.mainloop()

    def create_labels(self, num):
        self.picture = Image.open("blue.gif")
        self.picture.thumbnail((130,130))
        self.tkim = ImageTk.PhotoImage(self.picture)

        for label in self.lists_labels:
            label.destroy()
        self.lists_labels=[]

        for i in range(num):
            but = tk.Button(self.master, image = self.tkim)
            but.grid(row = i + 1, column = 0)
            self.lists_labels.append(but)


myapp = Halabala()

Tags: 图像importselfmasterforlabels按钮partial
1条回答
网友
1楼 · 发布于 2024-09-29 00:21:12

这是与您的问题相关的代码:

class Halabala():
    def __init__(self):
        .............
        self.pictures = ["pavuk1", "pavuk2", "pavuk3"]

        self.lists_labels = []
        self.lists_images = []

        self.init_image_list()
        ............

    def init_image_list(self):
        for i in self.pictures:
            picture = Image.open(i)
            picture.thumbnail((130, 130))
            self.lists_images.append(ImageTk.PhotoImage(picture))

    def create_labels(self, num):
        for label in self.lists_labels:
            label.destroy()
        self.lists_labels=[]

        for i in range(num):
            but = tk.Button(self.master, image = self.lists_images[i])
            but.grid(row = i + 1, column = 0)
            self.lists_labels.append(but)

相关问题 更多 >