【发布时间】:2021-10-05 04:02:45
【问题描述】:
我已尝试仅描绘和记录每个类的必要内容,希望您能帮助我,我正在尝试实例化 类
Show_image 需要两个参数,
图像列表的两个索引,如果你能指导我,如果我想做的事情是可能的,我将不胜感激。谢谢。
此类调整图像大小
from tkinter importante *
from PIL import Image, ImageTk
class Array(Frame):
def __init__(self, master, path, *args):
Frame.__init__(self, master, *args) self.image = Image.open(path)
self.img_copy = self.image.copy()
self.background_image = ImageTk.PhotoImage(self.image)
self.background = Label(self, image=self.background_image)
self.background.pack(fill='both', expand=True)
self.background.bind('<Configure>', self._resize_image)
def _resize_image(self, event):
self.image = self.img_copy .resize ((self.master .winfo_width(), self.master .winfo_height()))
self.background_image = ImageTk.PhotoImage(self.image)
self.background.configure(image=self.background_image)
基类控件
class Interface(Frame):
def __init__(self, master, *args):
Frame.__init__(self, master, *args)
self.path_lst = ['11.png','22.png','33.png','44.png'] # change/add paths
self._frame_1 = None
self._open_1 = False
self.button1 = Button(self, text='pack 1',
command= lambda:self.windows(Show_image))
self.button1 .pack()
def windows(self, var_1):
if not self._open_1:
self.top1 = Toplevel(self.master)
self.top1 .geometry('200x200')
container = var_1(self.top1)
if self._frame_1 is not None:
self._frame_1 .destroy()
self._frame_1 = container
self._frame_1 .pack()
self._open_1 = True
self.top1.protocol ('WM_DELETE_WINDOW', lambda: self.closed(1))
def closed(self, number):
if number == 1:
self.top1. destroy()
self._open_1 = False
这个类应该画两个实例,两个图像,但是我不知道怎么传 <index_1> 和 <index_2> arguments in bound <lambda> 函数。
class Show_image(Frame):
def __init__(self, index_1, index_2, *args, **kwargs):
Frame.__init__(self, *args, **kwargs)
self.img = Array(self, self.master.path_lst[index_1])
self.img .grid(column=0, row=0)
self.img2 = Array(self, self.master.path_lst[index_2])
self.img2 .grid(column=0, row=1)
root = Tk()
frm = Interface(root)
frm .pack()
root.mainloop()
另外,如果您能告诉我图像的初始化路径是否正确。谢谢。
【问题讨论】:
-
我不确定我是否在关注;你是这个意思吗?
self.button1 = Button(self, text='pack 1', command= lambda:self.windows(Show_image(index_1, index_2, args, kwargs))) -
@Schalton 感谢您的帮助,但我担心
<path_lst>列表有问题,因为<Show_image>类无法识别它并且我正在抛出错误.抱歉,这是我的另一个错误,一旦我解决了它,我会测试<lambda top>是否适合我。谢谢你给我的帮助,我很感激。