如何使用输入小部件重置图像标签的大小?

时间:2018-12-28 03:52:40

标签: python user-interface tkinter

在函数中创建图像标签后,我想使用在输入小部件中输入的用户定义值来重置图像标签的尺寸。基本上,我使用“打开文件...”按钮打开图像文件,并允许通过鼠标移动来调整其大小。现在,我想创建一个“设置尺寸”按钮,以通过用户输入重置该图像的尺寸。但是,由于图像标签是在函数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)

0 个答案:

没有答案