【问题标题】:Python Tkinter - Find image file path from PhotoImagePython Tkinter - 从 PhotoImage 中查找图像文件路径
【发布时间】:2014-09-01 07:41:31
【问题描述】:

我在 tkinter 中有一个名为 al_p4 的 PhotoImage,但我希望能够打印图像的文件路径。任何人都可以帮忙。这是我的代码:

al_p4 = Image.open("Media/DVD/image.jpg").resize((100, 150), Image.ANTIALIAS)
al_p4 = ImageTk.PhotoImage(al_p4)

在此先谢谢大家 ;)

【问题讨论】:

  • 您可能希望更清楚地了解“返回图像的文件路径”的含义。你的意思是把它返回到另一个函数?或者将文件路径打印到小部件以使其对用户可见?还是完全不同的东西?基本上,更多信息会有所帮助。
  • 谢谢@Gustav 我已经编辑了我的问题。
  • 似乎filename可以从Image.open的结果中检索出来,但是当你resize图像或者你把它变成PhotoImage时丢失了。

标签: python-2.7 tkinter photoimage


【解决方案1】:

因为我仍然无法准确解释您的意思,所以这里有四个关于如何进行打印的不同答案。

如果您只需要打印它并且路径将始终保持不变,请使用:

print("Media/DVD/image.jpg")

如果你需要打印一些东西,路径会不同,试试:

filepath = "Media/DVD/image.jpg"
al_p4 = Image.open(filepath).resize((100, 150), Image.ANTIALIAS)
al_p4 = ImageTk.PhotoImage(al_p4)
print(filepath)

如果您需要将某些内容打印到小部件,这将取决于您要使用的小部件类型。对于像文件路径这样的小东西,标签可能会很好。查看effbot's documentation for the label widget了解更多详情。

如果您想将所有打印语句重定向到一个小部件,这取决于您的 GUI 的设计方式,这可能很有用,请创建一个类来重定向标准输出。这是一个带有文本小部件的示例:

import sys
import Tkinter

def nothing():
    print("Nothing")

class Application(Tkinter.Frame):
    def __init__(self, master = None):
        Tkinter.Frame.__init__(self, master)

        self.button = Tkinter.Button(text = "Button 1", command = nothing)
        self.button.pack()

        class StdoutRedirector(Tkinter.Text):
            def __init__(self):
                Tkinter.Text.__init__(self)
             def write(self, message):
                 printout.insert(Tkinter.END, message)
        printout = StdoutRedirector()
        printout.pack()
        sys.stdout = printout

root = Tkinter.Tk()
app = Application(root)
app.mainloop()

【讨论】:

    【解决方案2】:

    我是编码新手,所以我会尽力而为 =) 快速回答: 您需要在 PIL 对象中使用 .filename(不适用于 TK 对象)

    #这是图片: al_p4 = Image.open("Media/DVD/image.jpg").resize((100, 150), Image.ANTIALIAS)

    #这是在 Tkinter 中显示的,注意我添加了 ..._TK al_p4_TK = ImageTk.PhotoImage(al_p4)

    #这是我认为你想要的文件路径: print(al_p4.filename)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-19
      • 1970-01-01
      • 2023-04-02
      • 2021-12-11
      • 2013-03-25
      相关资源
      最近更新 更多