From 4abd6168cdfba4977fc1ac82287f911d8fcff220 Mon Sep 17 00:00:00 2001 From: marques <20172333133@m.scnu.edu.cn> Date: Thu, 4 Sep 2025 15:45:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=9F=A9=E5=BD=A2=E5=A4=84?= =?UTF-8?q?=E7=90=86=E9=80=BB=E8=BE=91=EF=BC=8C=E6=B7=BB=E5=8A=A0=E8=BE=85?= =?UTF-8?q?=E5=8A=A9=E5=87=BD=E6=95=B0=E4=BB=A5=E8=AE=BE=E7=BD=AE=E7=9F=A9?= =?UTF-8?q?=E5=BD=A2=E7=9A=84x=E5=9D=90=E6=A0=87=E5=92=8C=E5=AE=BD?= =?UTF-8?q?=E5=BA=A6=EF=BC=8C=E6=94=AF=E6=8C=81=E4=B8=8D=E5=90=8C=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E7=9A=84=E7=9F=A9=E5=BD=A2=E5=AF=B9=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- func/Module_SA_label_v2.py | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/func/Module_SA_label_v2.py b/func/Module_SA_label_v2.py index 59f13f1..20ce6e0 100644 --- a/func/Module_SA_label_v2.py +++ b/func/Module_SA_label_v2.py @@ -911,7 +911,7 @@ class MainWindow_SA_label(QMainWindow): end_point = start_point + self.config["WindowSignalSecond"] * plot_freq for channel, ax in self.channel_to_ax.items(): if self.channel_to_best_fit_checkbox[channel] is not None and ( - not self.channel_to_best_fit_checkbox[channel].isChecked()): + not self.channel_to_best_fit_checkbox[channel].isChecked()): continue signal_max = self.data.channel[channel][start_point: end_point].max() signal_min = self.data.channel[channel][start_point: end_point].min() @@ -1055,8 +1055,8 @@ class MainWindow_SA_label(QMainWindow): new_width = max(new_width, 1) # 最小宽度为1秒 - self.selected_event_rect.set_x(new_start) - self.selected_event_rect.set_width(new_width) + self.__set_x_and_width__(self.selected_event_rect, new_start, new_width) + else: if self.press is not None and self.press[1] == 'empty': @@ -1255,8 +1255,7 @@ class MainWindow_SA_label(QMainWindow): event_right = self.selected_event_info["correct_End"] if self.selected_event_info["isLabeled"] != -1 else \ self.selected_event_info["End"] if x_rect != event_left or width != (event_right - event_left): - self.selected_event_rect.set_x(event_left) - self.selected_event_rect.set_width(event_right - event_left) + self.__set_x_and_width__(self.selected_event_rect, event_left, event_right - event_left) self.canvas.draw_idle() @overrides @@ -2005,7 +2004,7 @@ class MainWindow_SA_label(QMainWindow): def __get_x_and_width__(self, event_rect): """Get the width of a rectangle in data coordinates.""" # matplotlib >=3.9 axvspan 返回的是一个Rectangle对象 - # matplorlib < 3.9 axvspan 返回的是一个PolyCollection对象 + # matplorlib < 3.9 axvspan 返回的是一个Poly对象 if isinstance(event_rect, Rectangle): x = event_rect.get_x() width = event_rect.get_width() @@ -2017,6 +2016,23 @@ class MainWindow_SA_label(QMainWindow): else: raise TypeError("Unsupported event_rect type") return x, width + + def __set_x_and_width__(self, event_rect, x, width): + """Set the x and width of a rectangle in data coordinates.""" + if isinstance(event_rect, Rectangle): + event_rect.set_x(x) + event_rect.set_width(width) + elif isinstance(event_rect, Polygon): + verts = event_rect.get_xy() + verts[0, 0] = x + verts[1, 0] = x + verts[2, 0] = x + width + verts[3, 0] = x + width + event_rect.set_xy(verts) + else: + raise TypeError("Unsupported event_rect type") + + class CustomNavigationToolbar(NavigationToolbar2QT): def __init__(self, canvas, parent): super().__init__(canvas, parent)