当前位置: 首页 > 面试题库 >

如何将图像添加到小部件?为什么不显示图像?

狄楷
2023-03-14
问题内容

如何在tkinter中将图像添加到小部件?

为什么当我使用此代码不起作用时:

some_widget.config(image=PhotoImage(file="test.png"), compound=RIGHT)

但这行得通吗?:

an_image=PhotoImage(file="test.png")
some_widget.config(image=anImage, compound=RIGHT)

问题答案:

当您尝试在第一个版本中使用图像时,该图像将被垃圾回收

effbot很古老,但是下面的代码片段很不错:

您必须在Python程序中保留对图像对象的引用,方法是将其存储在全局变量中,或者将其附加到另一个对象。

在第二个版本中,映像是在全局级别上声明的。

这是另一个演示此问题的示例,您希望它也可以工作,毕竟在函数中使用相同的代码

不起作用:

import tkinter as tk
from PIL import ImageTk

root = tk.Tk()
def make_button():
    b = tk.Button(root)
    image = ImageTk.PhotoImage(file="1.png")
    b.config(image=image)
    b.pack()
make_button()
root.mainloop()

起作用:

import tkiner as tk
from PIL import ImageTk

root = tk.Tk()
def make_button():
    b = tk.Button(root)
    image = ImageTk.PhotoImage(file="1.png")
    b.config(image=image)
    b.image = image
    b.pack()
make_button()
root.mainloop()

为什么?中的变量make_button是该函数的局部变量。如果您在类中遇到此类问题,则具有相同的想法。



 类似资料:
  • 问题内容: 最近8个小时我一直在阅读文档,但没有发现任何可以帮助我的东西。大概是,但是没有代码在工作,因为它一直说“找不到图像URL”并引发异常。但是我还有其他项目,从来没有这个问题。 因此,有一个类包含这样的月份: 到目前为止,一切都很好。我什至可以在控制台中对其进行测试,并且效果很好,并且可以按值排序。现在,当我尝试从资源中添加图像时,出现了我之前提到的问题:找不到URL。但是,我只能使用图像

  • 最近我一直在尝试java图形,并决定制作一个可以打印拼贴图像的程序。这个程序的构造函数接受一个图像数组和每个图像将显示的宽度。 当我运行程序时,我最初使用以下方法来设置JFrame窗口的大小: 不幸的是,JFrame确实显示了部分图像。JFrame窗口不够低,无法显示所有窗口。为了再次确认我的数学没有出错,我用下面这行代码进行了测试: 同样的问题也发生了。直到我使用了下面的一行,整个图像才显示出来

  • 我有一个非常简单的dockerfile 然后使用 根据我对Docker的了解,当我键入时,它应该只在下显示;但是这不是发生的事情。相反,我看到: 为什么会出现基础图像?例如,我从中提取的存储库 但这并没有出现。那么在这种情况下,为什么会有基础图像呢?

  • 正如你在下面的代码片段中看到的,我很难让蓝色覆盖贴在图像上,但是正如你所看到的,在左侧,由于某种原因,它没有贴在图片上。是的,我希望一整列的位置比另一列低/高一点,所以这里我尝试将整列1定位70px,但它撕裂了蓝色覆盖层和图像。有什么想法吗? null null

  • 问题内容: 这是我的代码。它不会在框架中显示图像,而是显示一些文本。有人可以建议我,我应该对代码进行哪些更改,以便可以在框架中显示图像? 问题答案: 请注意,我不会以这种方式设计代码,但是我希望使它尽可能接近原始代码,同时使其能够在基于Windows的框中显示图像列表。 列表显示

  • 问题内容: 我有一个JPanel,我想向其中添加即时生成的JPEG和PNG图像。 到目前为止,我在Swing教程中看到的所有示例,特别是在Swing示例中,都使用ImageIcon。 我将这些图像生成为字节数组,它们通常比示例中使用的通用图标大,尺寸为640x480。 使用ImageIcon类在JPanel中显示该大小的图像时是否存在任何(性能或其他)问题? 什么是平常做的呢? 如何不使用Imag