def show_mutil_images_on_widget2(self): if self.text_line_imgs is None: self.scroll.setWidget(QWidget()) else: main_widget = QWidget() main_layout = QVBoxLayout() # 生成需要展示的图像并更新行的位置 rows, cols = self.processing_img.shape new_line_postion = [] img = np.ones((self.text_line_margin, cols)) row_count = img.shape[0] for i, line_img in enumerate(self.text_line_imgs): line_img_rows, line_img_cols = line_img.shape line_img_tmp = np.ones((line_img_rows, cols)) line_img_tmp[:line_img_rows, :line_img_cols] = line_img img = np.vstack([ img, line_img_tmp, np.ones((self.text_line_margin, cols)) ]) self.text_line_imgs[i] = line_img_tmp new_line_postion.append( (row_count, row_count + line_img_rows, 0, cols)) row_count += line_img.shape[0] + self.text_line_margin rows = img.shape[0] figsize = cols / RISZIE_RATIO * 2, rows / RISZIE_RATIO * 2 fig = plt.figure(figsize=figsize) # print(figsize) self.ax = fig.add_axes(self.axe_size) self.ax.spines['left'].set_color('none') self.ax.spines['right'].set_color('none') self.ax.spines['bottom'].set_color('none') self.ax.spines['top'].set_color('none') self.ax.set_xticks([]) self.ax.set_yticks([]) self.ax.imshow(img, cmap='gray') rec_list = [] for i, line_position in enumerate(new_line_postion): min_row, max_row, min_col, max_col = line_position rec = Rectangle((min_col, min_row), max_col - min_col, max_row - min_row, fill=False, ec="red", picker=True) rec_list.append(rec) rec.line_index = i for p in rec_list: self.ax.add_patch(p) self.canvas = FigureCanvas(fig) self.canvas.draw() self.canvas.mpl_connect('pick_event', self.on_line_pick) self.processing_img = img self.text_line_position_array = new_line_postion self.selected_text_line_index_list = [] main_layout.addWidget(self.canvas) main_widget.setLayout(main_layout) self.scroll.setWidget(main_widget)