如何去除 Tkinter 中 matplotlib 图周围的灰色边框 canvas
how to remove gray border around matplotlib plots in Tkinter canvas
如何删除每个 canvas 周围出现的灰色边框?我已经将 facecolor
设置为黑色,我认为应该处理它。
import matplotlib
matplotlib.use('TkAgg')
from numpy import arange, sin, cos, pi
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.backend_bases import key_press_handler
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.configure(background='black')
x = Figure(figsize=(3,3), dpi=100, facecolor='black')
b = x.add_subplot(111, axisbg='#1a1a1a')
c = arange(0.0,3.0,0.01)
s = cos(2*pi*c)
b.plot(c,s)
f = Figure(figsize=(5,3), dpi=100, facecolor='black')
a = f.add_subplot(111, axisbg='#1a1a1a')
t = arange(0.0,3.0,0.01)
s = sin(2*pi*t)
a.plot(t,s)
canvas = FigureCanvasTkAgg(f, master=root)
canvas1 = FigureCanvasTkAgg(f, master=root)
canvas.show()
canvas.get_tk_widget().grid(row=0,column=0)
canvas1.show()
canvas1.get_tk_widget().grid(row=1,column=0)
Tk.mainloop()
您看到的 canvas 周围的灰色边框是 FigureCanvasTkAgg 小部件的背景。因此,除了更改 root 和 Figure 背景的背景之外,您还必须更改 canvas 背景。
要更改 FigureCanvasTkAgg 的背景,您必须获取底层 Tk canvas 小部件并对其进行适当配置。记录了所需的方法 here.
因此,您必须像
一样调整您的代码
...
canvas = FigureCanvasTkAgg(f, master=root)
canvas.get_tk_widget().configure(background='black', highlightcolor='black', highlightbackground='black')
canvas1 = FigureCanvasTkAgg(f, master=root)
canvas1.get_tk_widget().configure(background='black', highlightcolor='black', highlightbackground='black')
canvas.show()
canvas.get_tk_widget().grid(row=0,column=0)
canvas1.show()
canvas1.get_tk_widget().grid(row=1,column=0)
...
更新:
如果仍然有一个小的灰色边框,这可能是由于其中一个 canvases 当前的焦点。在我的测试中,上面的 canvas 仍然有一个小的灰色边框,这表明另一个 canvas 处于焦点上(用黑色边框突出显示)。因此,要摆脱这个额外的边框,必须更改未聚焦 canvas 的高亮颜色。这可以通过两个参数 highlightbackground
和 highlightcolor
来实现。我已经更新了上面发布的代码来解决这个问题。有了这个 window 在我的机器上看起来像
如何删除每个 canvas 周围出现的灰色边框?我已经将 facecolor
设置为黑色,我认为应该处理它。
import matplotlib
matplotlib.use('TkAgg')
from numpy import arange, sin, cos, pi
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.backend_bases import key_press_handler
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.configure(background='black')
x = Figure(figsize=(3,3), dpi=100, facecolor='black')
b = x.add_subplot(111, axisbg='#1a1a1a')
c = arange(0.0,3.0,0.01)
s = cos(2*pi*c)
b.plot(c,s)
f = Figure(figsize=(5,3), dpi=100, facecolor='black')
a = f.add_subplot(111, axisbg='#1a1a1a')
t = arange(0.0,3.0,0.01)
s = sin(2*pi*t)
a.plot(t,s)
canvas = FigureCanvasTkAgg(f, master=root)
canvas1 = FigureCanvasTkAgg(f, master=root)
canvas.show()
canvas.get_tk_widget().grid(row=0,column=0)
canvas1.show()
canvas1.get_tk_widget().grid(row=1,column=0)
Tk.mainloop()
您看到的 canvas 周围的灰色边框是 FigureCanvasTkAgg 小部件的背景。因此,除了更改 root 和 Figure 背景的背景之外,您还必须更改 canvas 背景。
要更改 FigureCanvasTkAgg 的背景,您必须获取底层 Tk canvas 小部件并对其进行适当配置。记录了所需的方法 here.
因此,您必须像
一样调整您的代码...
canvas = FigureCanvasTkAgg(f, master=root)
canvas.get_tk_widget().configure(background='black', highlightcolor='black', highlightbackground='black')
canvas1 = FigureCanvasTkAgg(f, master=root)
canvas1.get_tk_widget().configure(background='black', highlightcolor='black', highlightbackground='black')
canvas.show()
canvas.get_tk_widget().grid(row=0,column=0)
canvas1.show()
canvas1.get_tk_widget().grid(row=1,column=0)
...
更新:
如果仍然有一个小的灰色边框,这可能是由于其中一个 canvases 当前的焦点。在我的测试中,上面的 canvas 仍然有一个小的灰色边框,这表明另一个 canvas 处于焦点上(用黑色边框突出显示)。因此,要摆脱这个额外的边框,必须更改未聚焦 canvas 的高亮颜色。这可以通过两个参数 highlightbackground
和 highlightcolor
来实现。我已经更新了上面发布的代码来解决这个问题。有了这个 window 在我的机器上看起来像