在Tkinter Python中,我想创建两个框架并将一个放在另一个之上,然后在这两个框架中的每个框架中插入matplotlib图.这一点,我设法做到了.问题是,当创建时,这两个框架似乎总是具有不同的高度(底部的框架总是比顶部的框架小).

我的目标是让两个框架具有相同的高度.

以下是产生上述不良结果的代码的简化版本:

import tkinter as tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import matplotlib.pyplot as plt
import numpy as np

# Root
root = tk.Tk()
root.state('zoomed')

# Upper frame 
canv = tk.Frame(root)
canv.pack()

plt.rcParams["axes.prop_cycle"] = plt.cycler(color=["#4C2A85", "#BE96FF", "#957DAD", "#5E366E", "#A98CCC"])
plt.style.use('ggplot')

L = [i for i in range(10)]

fig, ax = plt.subplots()
l = ax.fill_between(L, L)
ax.set_title("Upper plot")

canvas = FigureCanvasTkAgg(fig, canv)
canvas.draw()
canvas.get_tk_widget().pack()

# Lower frame 
canv2 = tk.Frame(root)
canv2.pack()

fig2, ax2 = plt.subplots()
l2 = ax2.fill_between(L, L)
ax2.set_title("Lower plot")
    
canvas2 = FigureCanvasTkAgg(fig2, canv2)
canvas2.draw()
canvas2.get_tk_widget().pack()

root.mainloop

感谢任何愿意提供帮助的人.

推荐答案

不同的 idea :创建一个FigureCanvasTkAgg但创建两个axis

fig, (ax1, ax2) = plt.subplots(2)

matplotlib将控制大小.

import tkinter as tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import matplotlib.pyplot as plt
import numpy as np

root = tk.Tk()
#root.state('zoomed')

plt.rcParams["axes.prop_cycle"] = plt.cycler(color=["#4C2A85", "#BE96FF", "#957DAD", "#5E366E", "#A98CCC"])
plt.style.use('ggplot')

L = [i for i in range(10)]

fig, (ax1, ax2) = plt.subplots(2)

canvas = FigureCanvasTkAgg(fig, root)
canvas.draw()
canvas.get_tk_widget().pack(fill='both', expand=True)

l1 = ax1.fill_between(L, L)
ax1.set_title("Upper plot")

l2 = ax2.fill_between(L, L)
ax2.set_title("Lower plot")

fig.tight_layout()  # suggestion from @Zakaria comment

root.mainloop()

Python相关问答推荐

在IIS中运行的FastAPI-获取权限错误:[Win错误10013]试图以其访问权限禁止的方式访问插槽

如何确保Flask应用程序管理面板中的项目具有单击删除功能?

Tokenizer Docker:无法为Tokenizer构建轮子,这是安装pyproject.toml项目所需的

GEKKO:已知延迟的延迟系统的参数估计

将从Python接收的原始字节图像数据转换为C++ Qt QIcon以显示在QStandardProject中

这家einsum运营在做什么?E = NP.einsum(aj,kl-il,A,B)

如何将我的位置与光强度数据匹配到折射图案曲线中?

如何使用bs 4从元素中提取文本

使用多个性能指标执行循环特征消除

通过交换 node 对链接列表进行 Select 排序

如何在类和classy-fastapi -fastapi- followup中使用FastAPI创建路由

如何在Python数据框架中加速序列的符号化

如何调整QscrollArea以正确显示内部正在变化的Qgridlayout?

如何在UserSerializer中添加显式字段?

如何使Matplotlib标题以图形为中心,而图例框则以图形为中心

isinstance()在使用dill.dump和dill.load后,对列表中包含的对象失败

使用Python和文件进行模糊输出

在matplotlib中删除子图之间的间隙_mosaic

判断solve_ivp中的事件

搜索按钮不工作,Python tkinter