[英]displaying an image without adding the file format using PIL
我編寫了一個可以搜索文件夾並在新窗口中顯示圖片的功能(如果文件存在),但是在該功能正常運行之前,我總是必須添加圖像文件格式或擴展名。
有沒有辦法可以解決忽略.gif
或.png
等擴展名的問題
from tkinter import *
from PIL import *
def display_pix():
hmm = Toplevel(window)
hmm.geometry('300x300')
label = Label(hmm,)
label.pack()
PhotoImage( file = 'C:\\Python34\\' + e.get())
logo = PhotoImage( file = 'C:\\Python34\\' + e.get())
label.img = logo
label.config(image = label.img)
window = Tk()
e = Entry( window, width= 20)
b = Button( window, text = 'search',command = display_pix)
e.place(x = 50, y = 30)
b.place(x = 70, y = 50)
window.mainloop()
如果文件名為spam.gif
,那就是其文件名,因此您不能僅將其打開為spam
。 (是的,Windows資源管理器會嘗試向您隱藏此內容,但僅限於有限的程度,並且,如果您要執行相同的操作,則必須執行Windows資源管理器的相同操作。)
如果希望用戶能夠輸入spam
,並且要讓程序自動打開spam.gif
或spam.jpg
或spam.png
,則需要明確查找與所需模式匹配的文件。 而且,您還必須決定如果找到兩個這樣的文件,或者根本不是圖像的名為spam.txt
的文件,該怎么辦?
最簡單的版本(嘗試打開第一個spam.*
)是這樣的:
def open_image_file(path, name):
for fullname in os.listdir(path):
if fnmatch.fnmatch(f, name + '.*'):
return PhotoImage(file=os.path.join(path, fullname))
現在您可以執行以下操作:
logo = open_image_file(r'C:\Python34', e.get())
(如果未找到名為spam.*
文件,則最終將顯示為None
。如果找到了文本文件或可執行文件,並且PhotoImage
引發了異常, PhotoImage
引發異常。否則, logo
將為第一個spam.*
文件的PhotoImage
。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.