2013-03-30 30 views
6

Tôi đã thử hai việc khác nhau để cố gắng để có được một hình ảnh để hiển thị trong một nhãnTkinter hình ảnh không hiển thị hoặc đưa ra một lỗi

#This gives " TclError: couldn't recognize data in image file "TestImage.gif" " 
imgPath = "TestImage.gif" 
photo = PhotoImage(file = imgPath) 
label = Label(image = photo) 
label.image = photo # keep a reference! 
label.grid(row = 3, column = 1, padx = 5, pady = 5) 

#This gives no error but the image doesn't show 
imgPath = "TestImage.gif" 
photo = PhotoImage(imgPath) 
label = Label(image = photo) 
label.image = photo # keep a reference! 
label.grid(row = 3, column = 1, padx = 5, pady = 5) 

Hình ảnh là trong cùng một thư mục như tất cả các mã. Bất kỳ đề xuất nào về cách hiển thị hình ảnh?

+2

Đầu tiên dường như đem lại cho bạn thông tin hữu ích . Bạn có chắc chắn hình ảnh là đúng .gif? –

+0

Đó là một jpeg mà tôi đã lưu dưới dạng .gif (Loại nói GIF File). Vì vậy, tôi giả định rằng đó là alright. – Arktri

+2

không, không sao đâu. Tkinter chỉ hỗ trợ các tệp ở định dạng GIF, bất kể tên đó là gì. Đơn giản chỉ cần thay đổi tên không tự động làm cho nó một GIF. Để hiển thị jpeg bạn sẽ cần sử dụng PIL. –

Trả lời

5

Bryan Oakley là chính xác, hình ảnh không phải là một jpg về nội dung của nó, mặc dù hệ thống tệp của bạn cho rằng đó là hình ảnh gif.

Cuối cùng, tôi đã thử mở một jpg với chương trình của bạn và gặp lỗi tương tự 'TclError: không thể nhận dạng dữ liệu trong tệp hình ảnh "hello.jpg".'

Vì vậy, bạn có thể thực hiện việc này: Mở hình ảnh của bạn bằng mspaint, sau đó chuyển đến Tệp> Lưu dưới dạng và từ menu thả xuống "Lưu dưới dạng", chọn GIF. Sau đó, mã sẽ hoạt động. Đây là những gì tôi đã sử dụng:

from Tkinter import * 

root = Tk() 

imgPath = r"hello.gif" 
photo = PhotoImage(file = imgPath) 
label = Label(image = photo) 
label.image = photo # keep a reference! 
label.grid(row = 3, column = 1, padx = 5, pady = 5) 

root.mainloop() 

(btw, nếu tôi thay đổi dòng 7 trên để photo = PhotoImage(imgPath) sau đó như bạn, không có hình ảnh hiển thị Vì vậy, để nó như photo = PhotoImage(file = imgPath).)

Các vấn đề liên quan