2014-09-01 398 views
0

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

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

在此先感谢球员;)

+0

您可能希望更清楚地说明“返回图像的文件路径”的含义。你的意思是返回到另一个功能?或者将文件路径打印到一个小部件以使其可以被用户看到?还是其他什么东西?基本上,更多的信息会有所帮助。 – Gustav 2014-09-01 23:53:09

+0

Thanks @Gustav我编辑了我的问题。 – 2014-09-02 11:19:05

+1

看起来'filename'可以从'Image.open'的结果中找到,但是当你调整图像的大小或者将它变成PhotoImage时会丢失。 – 2014-09-02 11:28:28

回答

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的设计方式,这可能很有用,请创建一个类来重定向stdout。下面是一个带有文本小部件的示例:

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()