Tkinter:在弹出窗口中显示图(图)

时间:2019-04-15 08:51:22

标签: python python-3.x tkinter tkinter-canvas

这是可以帮助我在python上画图的线。

packing_options [best_index] .plot_sheets()

这是它在python上的外观。这是图形的图片。 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()

这是绘图代码。 packing_options [best_index]在这里也是一个函数。由于有一个循环,它绘制了10到20个图。 如何在此处应用matplotlib后端?

1 个答案:

答案 0 :(得分:1)

我无法运行它,但是它可能像这样

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()