Python 如何在tkinter窗口中调整matplotlib图形的大小

Python 如何在tkinter窗口中调整matplotlib图形的大小,python,matplotlib,tkinter,Python,Matplotlib,Tkinter,我正在尝试设置一些程序,其中包括matplotlib图和tkinter按钮以及它下面的其他内容。但是,matplotlib图占据了覆盖tkinter按钮和其他内容的整个窗口 我曾尝试使用pack,但它不允许我将内容并排放置,因此我希望tkinter小部件使用.grid或坐标进行排列 从tkinter导入* 从tkinter导入StringVar 进口tkinter 从matplotlib.backends.backend\u tkagg导入( 图CAVASTKAGG,导航工具栏(2TK) 从ma

我正在尝试设置一些程序,其中包括matplotlib图和tkinter按钮以及它下面的其他内容。但是,matplotlib图占据了覆盖tkinter按钮和其他内容的整个窗口

我曾尝试使用pack,但它不允许我将内容并排放置,因此我希望tkinter小部件使用.grid或坐标进行排列

从tkinter导入*
从tkinter导入StringVar
进口tkinter
从matplotlib.backends.backend\u tkagg导入(
图CAVASTKAGG,导航工具栏(2TK)
从matplotlib.figure导入图形
将matplotlib.pyplot作为plt导入
定义蛋():
打印(“鸡蛋”)
root=Tk()
根部几何形状(“600x600”)
根标题(“蛋”)
图=图(图尺寸=(10,6),dpi=100)
x=[1,2,3,4]
y=[1,2,3,4]
AS=[10/2**0]
图add_子图(111)。图(x,y)
#图add_子地块(111)。地块(AS)
canvas=FigureCanvasTkAgg(fig,master=root)#一个tk.DrawingArea。
canvas.draw()
canvas.get\u tk\u widget().pack(side=tkinter.TOP,fill=tkinter.BOTH,expand=1)
工具栏=导航工具栏2TK(画布,根)
toolbar.update()
canvas.get\u tk\u widget().pack(side=tkinter.TOP,fill=tkinter.BOTH,expand=1)
testbutton=Button(root,text=“test Button”,command=egs)
testbutton.place(x=100,y=550)
root.mainloop()

希望窗口的顶部被图形和按钮以及其下方的其他内容占据。

您可以使用一个
框架来保持图形及其工具栏垂直,使用另一个
框架来保持按钮水平。然后,您可以使用
pack()
将一个
Frame
放在顶部,另一个放在底部


唯一的问题是
figsize=(10,6)
“600x600”


顺便说一句:您可以使用
按钮(工具栏…)
将按钮添加到
导航工具栏2TK
-请参见
我的工具“



首先尝试使用
grid()
。您还可以将元素分组到
Frame
中,内部使用
pack()+1.
import tkinter as tk
from matplotlib.backends.backend_tkagg import (
    FigureCanvasTkAgg, NavigationToolbar2Tk)
from matplotlib.figure import Figure
import matplotlib.pyplot as plt

# --- functions ---

def eggs():
    print("eggs")

# --- main ---

x = [1, 2, 3, 4]
y = [1, 2, 3, 4]
AS = [10/2**0]

# ---

root = tk.Tk()
root.geometry("600x600")
root.title("eggs")

# ---

frame_top = tk.Frame(root)
frame_top.pack(fill='both', expand=True)

fig = Figure(dpi=100) # figsize=(10, 6), 
fig.add_subplot(111).plot(x,y)
#fig.add_subplot(111).plot(AS)

canvas = FigureCanvasTkAgg(fig, master=frame_top)  # A tk.DrawingArea.
canvas.draw()
canvas.get_tk_widget().pack(fill='both', expand=True)

toolbar = NavigationToolbar2Tk(canvas, frame_top)
toolbar.update()

tool = tk.Button(toolbar, text="my tool")
tool.pack(side='left')#, fill='x', expand=True)

# ---

frame_bottom = tk.Frame(root)
frame_bottom.pack(fill='x')

button1 = tk.Button(frame_bottom, text="button1")
button1.pack(side='left', fill='x', expand=True)

button2 = tk.Button(frame_bottom, text="button2")
button2.pack(side='left', fill='x', expand=True)

button3 = tk.Button(frame_bottom, text="button3")
button3.pack(side='left', fill='x', expand=True)

# ---

root.mainloop()