图像未通过Label小部件显示在Tkinter上

时间:2015-05-13 09:22:24

标签: python image user-interface tkinter

我使用以下代码在我的Tkinter GUI上显示图像,但只显示空白帧。

import Tkinter as tk class my_gui(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        img = tk.PhotoImage(file=PATH_TO_GIF)
        panel = tk.Label(self, image = img)
        panel.grid()

app = my_gui()

app.mainloop()

但是,以下代码有效:

import Tkinter as tk
root=tk.Tk()

img = tk.PhotoImage(file=PATH_TO_GIF)
panel = tk.Label(root, image = img)
panel.grid()

root.mainloop()

知道第一个脚本的问题是什么?

2 个答案:

答案 0 :(得分:1)

__init__()函数结束后,您创建的小部件将被丢弃。要解决此问题,请将它们保存为self的实例变量:

import Tkinter as tk 
class my_gui(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.img = tk.PhotoImage(file=PATH_TO_GIF)
        self.panel = tk.Label(self, image = self.img)
        self.panel.grid()

app = my_gui()

app.mainloop()

答案 1 :(得分:0)

@SimranjotSingh,尝试做的是在课堂上显示图像。 mainloop函数专门用于父窗口或框架。如果您需要调用类的实例,则应将其称为:

Instance_name = class_name(desired parameters)

但是在程序中,您需要将图像转换为标签而不是直接转到根/窗口。

您还可以查看以下内容:

Attempting to add a simple image into a label

How to add an image in Tkinter (Python 2.7)