【问题标题】:Image does not show on button Tkinter图像未显示在按钮 Tkinter 上
【发布时间】:2020-09-01 14:39:26
【问题描述】:

我试图简单地将图像添加到 tkinter 按钮。我什么都试过了:

import tkinter as tk


root = tk.Tk()
root.geometry('300x300+300+150')
photo = tk.PhotoImage('home.gif')
btn = tk.Button(root, image = photo, width = 100, height = 100)
btn.image = photo  # even with this does not work
btn.pack()
root.mainloop()

我还尝试使用 PIL 将 photo 变量设置为等于 ImageTk.PhotoImage(Image.open('home.gif')),我尝试了 open 函数,照片的绝对路径(是的,照片在我的脚本的同一目录中) ,但一切正常。窗口只是弹出一个大按钮,里面没有图像。

更新: 我尝试使用其他图像,我注意到一些图像显示而另一些则没有。这是因为具有透明背景的图像会导致 tkinter 出现错误或问题......所以,我不知道是否有办法解决这个问题。在谷歌上,我发现有些人使用画布,但我实际上需要将图像放在按钮内,所以我不知道该怎么做。

【问题讨论】:

  • photo = tk.PhotoImage('home.gif') 应该是photo = tk.PhotoImage(file='home.gif')
  • 还是不行·
  • @jizhihaoSAMA 我认为file 是一个位置论点?
  • @CoolCloud 不,filetkinter.PhotoImage() 中的关键字参数。
  • @Gianla 我相信按钮会自动调整大小以适应整个图像。

标签: python button tkinter


【解决方案1】:

请更改您的代码如下

photo = tk.PhotoImage(file='home.gif')

因为我更改了上面的代码并且它有效....

【讨论】:

  • 这没有任何意义。如果我将参数传递给作为第一个参数具有关键字 arg 的函数,则我传递的参数将自动分配给函数要求的第一个关键字参数。无论如何它都不起作用。
  • @Gianla:它有效,因为file 不是第一个位置参数。当您将文件名作为第一个位置参数传递时,它被视为图像对象的名称,而不是用于创建图像对象的文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-14
  • 2014-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-10
相关资源
最近更新 更多