尝试将简单图像添加到标签中

2 投票
1 回答
932 浏览
提问于 2025-04-16 21:50

我在一个学校提供的Tkinter教程网站上,试着把一个简单的手绘GIF图像放到我Python程序的一个标签里。

mainframe = ttk.Frame(sub, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)
mainframe['padding'] = (5,10)
label = ttk.Label(mainframe).grid(column=1, row=1)
image1 = PhotoImage(file='myimage.gif')
label['image'] = image1
sub.mainloop()

我提到的这段代码是:

label = ttk.Label(mainframe).grid(column=1, row=1)
image1 = PhotoImage(file='myimage.gif')
label['image'] = image1

但是运行后却返回了

Exception in Tkinter callback
Traceback (most recent call last):
    File "C:\Python31\lib\tkinter\__init__.py", line 1399, in __call__
        return self.func(*args)
    File "\\curriculum.lan\filestore\home\2005\jasomner\Downloads\trial5.py", line 20, in subwindow
        label['image'] = image1
TypeError: 'NoneType' object does not support item assignment

这是为什么呢?我该怎么解决这个问题?

1 个回答

2

当你执行

label = ttk.Label(mainframe).grid(column=1, row=1)

时,它实际上是把Label().grid()的结果存储在label里,而不是把新创建的Label实例存储进去。

如果你想把Label实例存到label里,同时又设置它的位置,你需要这样做:

label = ttk.Label(mainframe)
label.grid(column=1, row=1)

撰写回答