1

file dialog当用户通过调用函数按下按钮时,我试图打开(选择文件)窗口open

from Tkinter import *
import Tkinter, Tkconstants, tkFileDialog
from PIL import ImageTk, Image

root = Tk()
root.title('Application')


def open_file():
    root.filename = tkFileDialog.askopenfilename(initialdir="/", title="Select An Image", filetypes=(("jpeg files", "*.jpg"), ("gif files", "*.gif*"), ("png files", "*.png")))
    image_label = Label(root, text=root.filename)
    image_label.pack()
    my_image = ImageTk.PhotoImage(Image.open(root.filename))
    my_image_label = Label(root, image=my_image)
    my_image_label.pack()

my_button = Button(root, text="Open File", command=open_file)
my_button.pack()
root.mainloop()

但是,在我选择所选文件并“提交”后,它不会出现在my_image_label我创建的文件上(只出现图片大小的空白)但是当我在open函数之外使用函数内容时(不调用功能)它工作。

你知道什么似乎是问题吗?我该如何解决?

4

1 回答 1

1

我没有安装 2.7,所以这是我最好的猜测: root.filename我认为应该只是文件名。

返回什么print root.filename

编辑:我的第一个猜测是错误的。我已经修改它以在 3.6 中工作,几乎没有改变任何东西:

from tkinter import *
from tkinter import filedialog
from PIL import ImageTk, Image

root = Tk()
root.title('Application')


def open_file():
    filename = filedialog.askopenfilename(initialdir="/", title="Select An Image", filetypes=(("jpeg files", "*.jpg"), ("gif files", "*.gif*"), ("png files", "*.png")))
    image_label = Label(root, text=filename)
    image_label.pack()
    my_image = ImageTk.PhotoImage(Image.open(filename))
    my_image_label = Label(root, image=my_image)
    my_image_label.pack()

my_button = Button(root, text="Open File", command=open_file)
my_button.pack()
root.mainloop()

您是否可以在更新版本的 python 中工作?或者你必须学习2.7?

编辑:忘记我说的任何话。只需添加这一行: my_image_label.photo = my_image在包装标签之前。

于 2020-05-12T18:12:16.750 回答