【问题标题】:Can't add image to a class in tkinter无法将图像添加到 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()

标签: python image tkinter


【解决方案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
  • 还建议显式指定小部件的父级。
猜你喜欢
  • 1970-01-01
  • 2013-01-28
  • 1970-01-01
  • 2015-10-26
  • 2015-01-18
  • 1970-01-01
  • 2019-02-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多