调整Pyplot大小调整窗口大小

时间:2020-04-17 13:03:56

标签: matplotlib tkinter resize

我正在尝试使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调整大小的第一个问题,但到目前为止,我还无法获得任何建议的工作方式。

亲切的问候

0 个答案:

没有答案