【问题标题】:matplotlib add to panedwindow in tkintermatplotlib 添加到 tkinter 中的 panedwindow
【发布时间】:2020-05-15 13:45:21
【问题描述】:

我不明白如何正确地将 matplotlib 添加到 tkinter 的窗格窗口中。 我想在一侧有列表框和 matplotlib 交互式绘图,在另一侧 我需要通过拖动它们之间的边界来调整列表框和绘图

this is what is desirable

我试过了,但我无法将 matplot lib 正确添加到窗格窗口

from tkinter import *

from matplotlib.backends.backend_tkagg import (
    FigureCanvasTkAgg, NavigationToolbar2Tk)
# Implement the default Matplotlib key bindings.
from matplotlib.backend_bases import key_press_handler
from matplotlib.figure import Figure
import matplotlib.pyplot as plt

import numpy as np

root = Tk()

m = PanedWindow(root)
m.pack(fill=BOTH, expand=1)




fig = Figure(figsize=(5, 4), dpi=100)
t = np.arange(0, 3, .01)
fig.add_subplot(111).plot(t, 2 * np.sin(2 * np.pi * t))

canvas = FigureCanvasTkAgg(fig, master = root)  # A tk.DrawingArea.
canvas.draw()
canvas.get_tk_widget().pack(side=RIGHT, fill=BOTH, expand=1)

toolbar = NavigationToolbar2Tk(canvas, root)
toolbar.update()
canvas.get_tk_widget().pack(side=RIGHT, fill=BOTH, expand=1)
m.add(toolbar)
m.add(canvas)



lstbox2 = Listbox(selectmode=MULTIPLE, width=20, height=10)
m.add(lstbox2) 

root.mainloop()

【问题讨论】:

    标签: python matplotlib tkinter


    【解决方案1】:

    canvastoolbar 放在Frame 中,然后将Frame 添加到窗格窗口中:

    root = Tk()
    
    ...
    
    canvas_frame = Frame(root)
    canvas = FigureCanvasTkAgg(fig, master = canvas_frame)
    canvas.draw()
    canvas.get_tk_widget().pack()
    
    toolbar = NavigationToolbar2Tk(canvas, canvas_frame)
    toolbar.update()
    toolbar.pack_configure(expand=True)
    
    m.add(canvas_frame)
    
    lstbox2 = Listbox(selectmode=MULTIPLE, width=20, height=10)
    m.add(lstbox2)
    
    root.mainloop()
    

    【讨论】:

    • 谢谢您,先生。我去看看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 2021-06-13
    • 2019-01-31
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多