首页 > 解决方案 > 如何使用条目小部件重置图像标签的大小?

问题描述

我想在函数中创建图像标签后重置其尺寸,使用在条目小部件中输入的用户定义值。基本上我用“打开文件...”按钮打开图像文件,并允许它通过鼠标移动来调整大小。现在我想创建一个“设置尺寸”按钮,以通过用户输入来重置该图像的尺寸。但是由于图像标签是在函数 display_image 中创建的,有没有办法可以在之后重置它的尺寸?我已经评论了我有问题的部分。我对使用 python 和 tkinter 非常陌生,非常感谢您的帮助和耐心。

def display_image():
    f = filedialog.askopenfilename(
        title='Choose file',
        filetypes=[('png images', '.png'),
                   ('gif images', '.gif'),
                   ('jpeg images', '.jpg')]
    )

    def resize_image(event):
        new_width = event.width
        new_height = event.height
        image = copy_of_image.resize((new_width, new_height))
        img = ImageTk.PhotoImage(image)
        label.config(image=img)
        label.image = img 

    image = Image.open(f)
    copy_of_image = image.copy()
    img = ImageTk.PhotoImage(image)
    label = Label(container, image=img)
    label.bind('<Configure>', resize_image)
    label.pack(fill=BOTH, expand=YES)


def set_dimension():
    new_window = Toplevel(box1)
    new_window.title('Set Dimension')
    Label(new_window, text='width').grid(row=0, column=0)
    new_width = Entry(new_window, textvariable=StringVar())
    new_width.grid(row=0, column=1)
    Label(new_window, text='height').grid(row=0, column=2)
    new_height = Entry(new_window, textvariable=StringVar())
    new_height.grid(row=0, column=3)

    def reset():
        img_label.config(width=new_width, height=new_height) #here is the part that I have problem with

    Button(new_window, text='Reset', command=reset).grid(row=1, column=3, sticky=E)


Button(box1, text='Open File...', command=display_image).grid(row=0, column=4)
Button(box1, text='Set Dimension', command=set_dimension).grid(row=1, column=4)
Button(box1, text='Save').grid(row=10, column=4)

标签: pythonuser-interfacetkinter

解决方案


推荐阅读