如何在Tkinter中将NavigationToolbar2TkAgg的背景设置为某种颜色

时间:2018-01-20 01:07:55

标签: python-3.x matplotlib tkinter

我一直在开发一个图形程序,我想知道是否可以在工具栏中添加一些facecolor属性,因为它不在图上

    self.g = Figure(figsize=(5,5), dpi=100, facecolor=self.controller.color)
    self.canvas = FigureCanvasTkAgg(self.g, self)
    self.toolbar = NavigationToolbar2TkAgg(self.canvas, self)
    self.toolbar.facecolor = self.controller.color

1 个答案:

答案 0 :(得分:3)

Tk小部件有一个属性background,表示它们的背景颜色。您可以将其设置为工具栏本身,也可以设置为设置坐标的消息框。

color = "#d469a3"
toolbar = NavigationToolbar2TkAgg(canvas, root,  )
toolbar.config(background=color)
toolbar._message_label.config(background=color)
toolbar.update()

一些完整的示例,基于the official example

from numpy import arange, sin, pi
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figure

import sys
if sys.version_info[0] < 3:
    import Tkinter as Tk
else:
    import tkinter as Tk

root = Tk.Tk()
root.wm_title("Embedding in TK")


color = "#d469a3"
f = Figure(figsize=(5, 4), dpi=100, facecolor=color)
a = f.add_subplot(111)
t = arange(0.0, 3.0, 0.01)
s = sin(2*pi*t)

a.plot(t, s)


# a tk.DrawingArea
canvas = FigureCanvasTkAgg(f, master=root)
canvas.show()
canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)

toolbar = NavigationToolbar2TkAgg(canvas, root,  )
toolbar.config(background=color)
toolbar._message_label.config(background=color)
toolbar.update()
canvas._tkcanvas.pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)

Tk.mainloop()

enter image description here

您也可以更改按钮颜色

for button in toolbar.winfo_children():
    button.config(background=color)

导致

enter image description here

注意:在较新版本的matplotlib中,您应使用NavigationToolbar2Tk代替NavigationToolbar2TkAgg