Tkinter: график (график) результатов во всплывающем окне - PullRequest
0 голосов
/ 15 апреля 2019

Это линия, которая помогает мне строить на питоне.

packing_options [best_index] .plot_sheets ()

Вот так это выглядит на питоне. Это изображение графика. https://imgur.com/a/fRczosW

Теперь я пытаюсь tkinter. Я хочу, чтобы график всплыл. Как я могу это сделать ?

window = tk.Tk()
packing_options[best_index].plot_sheets()
window.mainloop()

Я попробовал это. Но не сработало.

Отредактировано: Итак, «matplotlib» должен использоваться как кто-то прокомментировал. Вот код:

def plot_sheet(self):
    fig,ax = plt.subplots(1)
    ax.set_xlim([0, self.W]) 
    ax.set_ylim([0, self.L]) 
    recs = []
    for i in range(len(self.rect_list)):
        if self.rect_rotate[i]:
            ax.add_patch(patches.Rectangle((self.rect_pos[i][0], self.rect_pos[i][1]), self.rect_list[i].l, self.rect_list[i].w,linewidth=3,edgecolor='r'))
        else:
            ax.add_patch(patches.Rectangle((self.rect_pos[i][0], self.rect_pos[i][1]), self.rect_list[i].w, self.rect_list[i].l,linewidth=3,edgecolor='r'))
    plt.show()

def plot_sheets(self):
    for i in range(len(self.sheets)):
        self.sheets[i].plot_sheet()

это код для построения. Packaging_options [best_index] также является здесь функцией. и это составляет около 10-20 участков, поскольку есть петля. Как мне применить здесь бэкэнд matplotlib?

1 Ответ

1 голос
/ 15 апреля 2019

Я не могу запустить его, но может быть что-то вроде этого

import matplotlib
matplotlib.use('TkAgg')

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

import matplotlib.pyplot as plt

import tkinter as tk

class YourClass():

    def plot_sheet(self):
        fig,ax = plt.subplots(1)
        ax.set_xlim([0, self.W]) 
        ax.set_ylim([0, self.L]) 
        recs = []
        for i in range(len(self.rect_list)):
            if self.rect_rotate[i]:
                ax.add_patch(patches.Rectangle((self.rect_pos[i][0], self.rect_pos[i][1]), self.rect_list[i].l, self.rect_list[i].w,linewidth=3,edgecolor='r'))
            else:
                ax.add_patch(patches.Rectangle((self.rect_pos[i][0], self.rect_pos[i][1]), self.rect_list[i].w, self.rect_list[i].l,linewidth=3,edgecolor='r'))
        #plt.show()
        return fig

#--- main ---

window = tk.Tk()

packing_options = [YourClass(), YourClass(), YourClass()]
best_index = 0

fig = packing_options[best_index].plot_sheets()

dataPlot = FigureCanvasTkAgg(fig, master=master)
dataPlot.show()
dataPlot.get_tk_widget().pack(side='top', fill='both', expand=1) 

window.mainloop()
...