我一直在学习如何从头开始使用Tkinter,当我尝试在框架中设置一个简单的Label小部件时:
from Tkinter import *
from ttk import *
root = Tk()
root.title("Practice")
mainW = LabelFrame(root, text = "Main info")
mainW.grid()
image = Label(mainW, image = "C:\Users\Oscar Ramirez\Pictures\image.png")
image.grid(column = 0, row = 0)
codeEntry = Entry(mainW, text = "User Code")
codeEntry.grid(column = 1, row = 0)
root.mainloop()
我收到以下错误:
Traceback (most recent call last):
File "Tutorial.py", line 10, in <module>
image = Label(mainW, image = "C:\Users\Oscar Ramirez\Pictures\image.png")
File "C:\Python27\lib\lib-tk\ttk.py", line 757, in __init__
Widget.__init__(self, master, "ttk::label", kw)
File "C:\Python27\lib\lib-tk\ttk.py", line 555, in __init__
Tkinter.Widget.__init__(self, master, widgetname, kw=kw)
File "C:\Python27\lib\lib-tk\Tkinter.py", line 2096, in __init__
(widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: image specification must contain an odd number of elements
我已经检查过图像格式,路线等等。现在我真的不知道是什么原因造成我的麻烦。
答案 0 :(得分:2)
图像
要在窗口小部件中显示的图像。 该值应为a PhotoImage,BitmapImage或兼容对象。 如果指定,则为此 优先于文本和位图选项。 (图像/图像)
现在您只是为label的图像选项传递字符串。你需要像
这样的东西photo = PhotoImage(file="image.gif")
label = Label(..., image=photo)
label.photo = photo #reference keeping is important when working with images
目前,由于您使用的是PNG图像,因此您需要安装并使用Python Imaging Library (PIL)。有关详细信息,请参阅effbot的Photo Image部分。