我正在尝试使matplotlib.pyplot图形在使用网格时调整为窗口大小。 我的第一个尝试是使用columnconfigure设置权重,该权重仅允许放大到一个点,在此点之后,数字将不会再变大。但是,减小窗口大小时,它会适当调整大小。
root.columnconfigure(0, weight=1)
下一个尝试是获取窗口大小,将其转换为像素并使用set_size_inches
self.fig_sig.set_size_inches(x_scaled,y_scaled)
self.fig_sig.canvas.draw()
但是,它实际上并没有改变大小。
下面是我用于测试的可运行代码。
import tkinter as tk
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
class MyApp(tk.Frame):
def __init__(self, master = None):
self.new_window()
tk.Frame.__init__(self, master)
self.counter = []
def new_window(self):
root.bind("<Configure>", self.resize)
root.columnconfigure(0, weight=1)
root.columnconfigure(1, weight=1)
root.columnconfigure(2, weight=1)
root.rowconfigure(1, weight=1)
self.fig_sig = plt.figure()
graph = self.fig_sig.add_subplot(111)
x_werte = [0,1,2,3,4,5]
y_werte = [0, 2, 4, 6, 8, 10]
graph.plot(x_werte, y_werte)
canvas = FigureCanvasTkAgg(self.fig_sig, master=root)
canvas_widget=canvas.get_tk_widget()
canvas_widget.grid(row = 1, column = 0, columnspan = 3)
canvas.draw()
def resize(self, event):
x_scaled = event.width/96
y_scaled = event.height/96 -2
self.fig_sig.set_size_inches(x_scaled,y_scaled)
self.fig_sig.canvas.draw()
print("resized to", x_scaled, y_scaled)
if __name__=="__main__":
root = tk.Tk()
myapp = MyApp(master = root)
myapp.mainloop()
虽然这不是关于使用matplotlib调整大小的第一个问题,但到目前为止,我还无法获得任何建议的工作方式。
亲切的问候