将图像(palplot)设置到 Customtkinter 按钮中

问题描述 投票:0回答:1

如何将图像(使用

palplot
创建的
seaborn
)设置到 Customtkinter 按钮 (
CTkButton
) 中?

在下面的 MWE 中,我创建了按钮和图像,但在按钮定义中使用

image = image
添加图像不起作用。

MWE

root = CTk()

# Create figure
image = plt.Figure()
ax = image.add_subplot()
# Create canvas to hold figure
canvas = FigureCanvasTkAgg(image, master=root)
canvas.get_tk_widget().grid(column=0, row=1)

ax.imshow(np.arange(500).reshape(1, 500),
          cmap=matplotlib.colors.ListedColormap(list(color_palette("flare", 500))),
          aspect="auto")
canvas.draw_idle()

# Create button
button = CTkButton(root, text="some button with an image", image = image)
button.grid(column=0, row=0)

root.mainloop()
python customtkinter
1个回答
0
投票

提供给CTkButton的图像必须是tk.Photoimage

所以我能想到的完成这项工作的唯一方法是将绘图临时存储到文件中:

CTkButton with transparent plot

import tempfile
from tkinter import PhotoImage

from customtkinter import CTk, CTkButton
from matplotlib import pyplot as plt

plt.imshow([[1,0],[0,1]])
# Save the plot to a temporary file
tmp_path = tempfile.NamedTemporaryFile(delete=False, suffix=".png").name
plt.savefig(tmp_path)
plt.close()

root = CTk()
# Implement temporary file as a PhotoImage for CTkButton
plot_img = PhotoImage(file=tmp_path, master=root)
button = CTkButton(root, text="some button with an image", image=plot_img)
button.grid(column=0, row=0)

root.mainloop()
© www.soinside.com 2019 - 2024. All rights reserved.