gpt4 book ai didi

python - 在tkinter框架内浏览图像

转载 作者:行者123 更新时间:2023-12-02 16:59:35 25 4
gpt4 key购买 nike

我有一个代码,其中包括打开一个弹出窗口,然后从目录中浏览图像,我必须将其放置在图像框中。问题是我找不到在没有按下加载按钮的情况下没有弹出窗口打开的情况下将图像放置在框架中的方法,或者在没有按下浏览按钮的情况下找到目录打开的方法,这是我陷入代码的地方:

import tkinter as tk
from tkinter.filedialog import askopenfilenames
from PIL import Image, ImageTk


window = tk.Tk()
window.title('Intialization')
window.geometry('350x250')


def browsefunc():
filename = tk.filedialog.askopenfilename(initialdir='initial/directory.. ')
img = Image.open('%s' % filename)
image = ImageTk.PhotoImage(img)
imageFrame = tk.Frame(left_frame, width=200, height=200, bg='grey')
imageFrame.grid(column=1, row=1, pady=5)
canvas = tk.Canvas(imageFrame, height=200, width=200)
canvas.image = image
canvas.create_image(0, 0, image=image)


def new_window():
window2 = tk.Toplevel(window)
window2.title('Pop-Up 1')
window2.geometry('600x400')
left_frame = tk.Frame(window2, width=300, height=400)
left_frame.grid(row=0, column=0)
right_frame = tk.Frame(window2, width=100, height=400)
right_frame.grid(row=0, column=1)
browse_btn = tk.Button(right_frame, text='Browse', command=browsefunc)
browse_btn.grid(row=0, column=1, pady=5)
window2.grab_set()


load_btn = tk.Button(window, text="Load", command=new_window)
load_btn.place(relx=0.5, rely=0.5, anchor=tk.CENTER)
window.mainloop()
在此代码中,我无法打开图像,因为left_frame尚未事先定义,但我将其发布以解释我的目标。我希望浏览图像并在左框架中打开而不打开目录,然后再按浏览。

最佳答案

您正在使用所有变量名称均为本地的函数加载图像。您应该做两件事:

  • left_frame对象传递给browsefunc(),以便在该函数中被知道:
    browse_btn = tk.Button(right_frame, text='Browse', command=browsefunc) # change to ->
    browse_btn = tk.Button(right_frame, text='Browse', command=lambda: browsefunc(left_frame))

  • 当然,您也应该将其作为参数: browsefunc(left_frame)
  • 其次,您在创建 Canvas 后忘记将其放在窗口上:
    canvas.pack(fill=tk.BOTH, expand=True)
  • 关于python - 在tkinter框架内浏览图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62571206/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com