Для таблицы я предполагаю, что вам нужны строки записей со значениями. Для этого я бы рекомендовал 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
Если по каким-то причинам, вам нужно к диаграмме и таблице в независимой раме (в отличие от рамы TopLevel в), то вы можете просто обернуть view_nets и tableframe в раме (измените родительский элемент на фрейм).
Еще одна вещь, о которой я расскажу, это то, что для всех легче, если вы, по крайней мере, включите импорт; Я на самом деле только начал изучать matplotlib сегодня, и это было единственной причиной, по которой я мог предположить, что вы использовали эту библиотеку (и даже тогда мне пришлось немного потрудиться, чтобы выяснить, как импортировать виджеты TkAgg). По моему опыту, есть только преимущества для хранения ссылок на модули (например, как вы импортировали Numpy), где могут возникнуть проблемы с непосредственным импортом содержимого модуля (т. Е. Из matplotlib.backends.backend_tkagg import FigureCanvasTkAgg или, что еще хуже, import *).
Что касается строки "canvas.get_tk_widget(). Grid (column = 0, row = 0)", я получал от нее ошибку геометрии. Заглядывая в источник, виджеты TkAgg на самом деле, буквально pack сами родителям. Это означает, что они не создают собственный фрейм (который является привычкой, в котором я нахожусь), что приведет к ошибкам геометрии, если пользователь определит менеджера геометрии для этого фрейма (хотя я скажу, что ребята, которые писали matplotlib/pyplot почти наверняка более умны, чем я, поэтому, вероятно, есть причина, почему они это сделали).
В любом случае, надеюсь, что это поможет вам; Дайте знать, если у вас появятся вопросы!
Большое спасибо за помощь! Это абсолютно идеально. Очень признателен! –
Рад помочь :) Если вам ничего не нужно для этого вопроса, вы можете нажать галочку рядом с ответом, чтобы отметить вопрос как «Ответ», –