テーブルの場合、値のあるレコードの行が必要であると仮定しています。このため私はTreeview Widget out of tkinter.ttkをお勧めします。
お互いに隣り合って座っていると、パイロット図の周りの灰色の境界線がグラフ自体の一部であるとみなされています(言い換えれば、テーブルを灰色の領域またはプロットキャンバスのいずれかに直接ドラッグします)。このため、tk.Toplevelをどのように投入していたのかを整理しました。なぜなら、view_netsのどれかで始まっていないからです。
import tkinter as tk, tkinter.ttk as ttk
import matplotlib.pyplot as plt
import matplotlib.backends.backend_tkagg as TkAgg
import numpy as np
top=tk.Toplevel()
view_nets = tk.Frame(top)
view_nets.pack(side='left',fill='both',expand=True) ## Packing Left in order to place
## another Frame next to it
# Widgets
f = plt.Figure(figsize=(10,8),dpi=100)
F = f.add_subplot(111)
canvas = TkAgg.FigureCanvasTkAgg(f,master = view_nets) ## Moved Chart to view_nets Frame
canvas.show()
## canvas.get_tk_widget().grid(column = 0, row = 0) I'll explain commenting this out below
toolbar = TkAgg.NavigationToolbar2TkAgg(canvas, view_nets)
toolbar.update()
canvas._tkcanvas.pack(fill='both',expand=True)
## Adding Frame to bundle Treeview with Scrollbar (same idea as Plot+Navbar in same Frame)
tableframe = tk.Frame(top)
tableframe.pack(side='left',fill='y') ## Packing against view_nets Frame
COLUMNS=['name','value'] ## Column Headers for Data
## See Documentation for more info on Treeview
table=ttk.Treeview(tableframe, columns=COLUMNS, show='headings')
table.pack(side='left',fill='y')
for column in COLUMNS: ## Setting Column Header
table.heading(column,text=column)
scroll=tk.Scrollbar(tableframe,command=table.yview) ## Adding Vertical Scrollbar
scroll.pack(side='left',fill='y')
table.configure(yscrollcommand=scroll.set) ## Attach Scrollbar
特定の理由のために、あなたは独立したフレーム(トップレベルのフレームではなく)でのチャートとテーブルに必要な、場合、あなたは、単に(フレームにview_netsとtableframeをラップすることができます親をフレームに変更する)。
私が言及するもう1つのことは、少なくともあなたが輸入品を含めば、誰にとっても簡単だということです。私は実際にmatplotlibの学習を始めました。これはあなたがそのライブラリを使っていることを推測できる唯一の理由でした(さらにTkAggウィジェットをインポートする方法を理解するためにいくつかのやり方をしなければなりませんでした)。私の経験では、(Numpyをどのようにインポートしたかのように)モジュールのリファレンスを維持するだけのメリットがあります。モジュールのコンテンツを直接インポートすることに問題があるかもしれません(matplotlib.backends.backend_tkagg import FigureCanvasTkAggから悪いですが、import *)。
"canvas.get_tk_widget()。grid(column = 0、row = 0)"の場合、ジオメトリエラーが発生しました。ソースを調べると、TkAggウィジェットは実際には文字通りパック自身を親にします。これは、ユーザがそのフレームのジオメトリマネージャを定義した場合、ジオメトリエラーにつながる自分自身のフレーム(実際に私がいる癖です)を実際に作成しないことを意味します(ただし、matplotlibを書いた人たち/ pyplotは私よりも確かに賢いので、そういう理由が考えられます)。
とにかく、これがあなたを助けてくれることを願っています。ご質問がある場合は私にお知らせください!
大変ありがとうございます!これは絶対に完璧です。とても有難い! –
喜んでください:)この質問に必要なものが他にない場合は、質問を「回答済み」とマークするために、回答の横にあるチェックマークを押すことができます –