无法将图像添加到 tkinter 中的类
Posted
技术标签:
【中文标题】无法将图像添加到 tkinter 中的类【英文标题】:Can't add image to a class in tkinter 【发布时间】:2022-01-18 03:32:49 【问题描述】:我试图在一个类的 tkinter 的窗口中显示一个图像,但我无法让它工作,没有图像行它显示一个空窗口但是当我使用图像行执行代码时,我收到错误消息:'Img_window' object has no attribute 'tk'.
如何更改代码以显示图像?
代码如下:
from tkinter import *
from PIL import Image, ImageTk
class Img_window:
def __init__(self):
self.window = Tk()
self.window.title("Image")
image_open = Image.open("welcome.jpg")
welcome_img = ImageTk.PhotoImage(image_open)
image_label = Label(self, image = welcome_img)
image_label.grid(row=1,columnspan=3)
self.window.mainloop()
img_window = Img_window()
【问题讨论】:
你在说什么“线条”?我认为您的问题可能与Why does Tkinter image not show up if created in a function? 重复 错字。你有Label(self, ...)
,你需要Label(self.window, ...)
。
您不能使用非小部件作为小部件的父级。 self
不是小部件。
如果是子窗口,使用Toplevel()
而不是Tk()
。
【参考方案1】:
import tkinter as tk #Added this
from tkinter import *
from PIL import Image, ImageTk
class Img_window:
def __init__(self):
window = Tk() #Fixed
window.title("Image") #Fixed
image_open = Image.open("welcome.jpg")
welcome_img = ImageTk.PhotoImage(image_open)
image_label = Label(image = welcome_img) #fixed
image_label.grid(row=1,columnspan=3)
window.mainloop()
Img_window()
您的问题是在不应该使用 self 的地方使用 self 并且没有将 tkinter 作为 tk 导入
image_label = Label(self, image = welcome_img)
self.window = Tk()
self.window.title("Image")
【讨论】:
我忘了告诉你添加:import tkinter as tk 完全不需要导入。他们在任何地方都没有提到tk
。
还建议显式指定小部件的父级。以上是关于无法将图像添加到 tkinter 中的类的主要内容,如果未能解决你的问题,请参考以下文章