如何在同一窗口中放置两个不同的地块?

时间:2019-07-07 08:52:52

标签: python tkinter tkinter-canvas

我想使用画布在同一窗口中放置两个图形。有两条不同的线根据不同的计算得出不同的图。假设,如果两条不同的线各给出7张图,我想将每条线的第1条图放到一个窗口中。这是代码的一部分:

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):
    fig = plt.figure()
    col = math.ceil(len(self.sheets)**0.5)
    row = math.ceil(float(len(self.sheets))/col)
    gs = gridspec.GridSpec(row, col)
    idx = 0
    for i in range(row):
        for j in range(col):
            ax = plt.subplot(gs[i, j])
            tmp_sh = self.sheets[idx]
            ax.set_xlim([0, tmp_sh.W]) 
            ax.set_ylim([0, tmp_sh.L]) 
            for k in range(len(tmp_sh.rect_list)):
                if tmp_sh.rect_rotate[k]:
                    ax.add_patch(patches.Rectangle((tmp_sh.rect_pos[k][0], tmp_sh.rect_pos[k][1]), tmp_sh.rect_list[k].l, tmp_sh.rect_list[k].w,linewidth=3,edgecolor='r'))
                else:
                    ax.add_patch(patches.Rectangle((tmp_sh.rect_pos[k][0], tmp_sh.rect_pos[k][1]), tmp_sh.rect_list[k].w, tmp_sh.rect_list[k].l,linewidth=3,edgecolor='r'))
            idx = idx + 1
            if idx == len(self.sheets):
                break
    plt.show()

这部分有助于绘制图形。下面的线绘制了图形:

best.plot_sheets()
packing_options[best_index].plot_sheets()

这是两个数字。我们可以使用画布将其放置在窗口中吗? https://imgur.com/yaM2AVr

0 个答案:

没有答案