From 053ce7c8498cd09276237aa785a6c8d89370e5f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E5=85=B4=E9=9C=96?= <3189844089@qq.com> Date: Mon, 3 Nov 2025 10:39:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AE=B5=E8=90=BD=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/word_main_window.py | 108 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) diff --git a/src/word_main_window.py b/src/word_main_window.py index 2a7f7da..e402be8 100644 --- a/src/word_main_window.py +++ b/src/word_main_window.py @@ -817,6 +817,15 @@ class WordStyleMainWindow(QMainWindow): self.ribbon.underline_btn.clicked.connect(self.on_underline_clicked) self.ribbon.color_btn.clicked.connect(self.on_color_clicked) + # 段落对齐按钮信号 + if hasattr(self.ribbon, 'align_left_btn'): + self.ribbon.align_left_btn.clicked.connect(self.on_align_left_clicked) + self.ribbon.align_center_btn.clicked.connect(self.on_align_center_clicked) + self.ribbon.align_right_btn.clicked.connect(self.on_align_right_clicked) + self.ribbon.align_justify_btn.clicked.connect(self.on_align_justify_clicked) + # 连接文本光标位置变化信号,实时更新对齐按钮状态 + self.text_edit.cursorPositionChanged.connect(self.on_cursor_position_changed) + # 查找和替换按钮信号 if hasattr(self.ribbon, 'find_btn'): self.ribbon.find_btn.clicked.connect(self.show_find_dialog) @@ -1282,6 +1291,105 @@ class WordStyleMainWindow(QMainWindow): if cursor.hasSelection(): self.status_bar.showMessage("字体颜色已设置,新输入的文本将使用该颜色", 2000) + def on_align_left_clicked(self, checked): + """左对齐按钮点击处理""" + if checked: + self.set_paragraph_alignment(Qt.AlignLeft) + self.update_alignment_buttons('left') + self.status_bar.showMessage("段落已设置为左对齐", 2000) + else: + # 如果取消选中,重新选中(确保始终有一个按钮被选中) + self.ribbon.align_left_btn.setChecked(True) + + def on_align_center_clicked(self, checked): + """居中对齐按钮点击处理""" + if checked: + self.set_paragraph_alignment(Qt.AlignCenter) + self.update_alignment_buttons('center') + self.status_bar.showMessage("段落已设置为居中对齐", 2000) + else: + # 如果取消选中,重新选中(确保始终有一个按钮被选中) + self.ribbon.align_center_btn.setChecked(True) + + def on_align_right_clicked(self, checked): + """右对齐按钮点击处理""" + if checked: + self.set_paragraph_alignment(Qt.AlignRight) + self.update_alignment_buttons('right') + self.status_bar.showMessage("段落已设置为右对齐", 2000) + else: + # 如果取消选中,重新选中(确保始终有一个按钮被选中) + self.ribbon.align_right_btn.setChecked(True) + + def on_align_justify_clicked(self, checked): + """两端对齐按钮点击处理""" + if checked: + self.set_paragraph_alignment(Qt.AlignJustify) + self.update_alignment_buttons('justify') + self.status_bar.showMessage("段落已设置为两端对齐", 2000) + else: + # 如果取消选中,重新选中(确保始终有一个按钮被选中) + self.ribbon.align_justify_btn.setChecked(True) + + def set_paragraph_alignment(self, alignment): + """设置段落对齐方式""" + cursor = self.text_edit.textCursor() + + if cursor.hasSelection(): + # 如果有选中文本,设置选中文本的对齐方式 + block_format = cursor.blockFormat() + block_format.setAlignment(alignment) + cursor.setBlockFormat(block_format) + else: + # 如果没有选中文本,设置当前段落的对齐方式 + cursor.select(QTextCursor.BlockUnderCursor) + block_format = cursor.blockFormat() + block_format.setAlignment(alignment) + cursor.setBlockFormat(block_format) + + def update_alignment_buttons(self, active_alignment): + """更新对齐按钮的选中状态""" + if not hasattr(self.ribbon, 'align_left_btn'): + return + + # 重置所有对齐按钮的状态 + self.ribbon.align_left_btn.setChecked(False) + self.ribbon.align_center_btn.setChecked(False) + self.ribbon.align_right_btn.setChecked(False) + self.ribbon.align_justify_btn.setChecked(False) + + # 设置当前活动的对齐按钮 + if active_alignment == 'left': + self.ribbon.align_left_btn.setChecked(True) + elif active_alignment == 'center': + self.ribbon.align_center_btn.setChecked(True) + elif active_alignment == 'right': + self.ribbon.align_right_btn.setChecked(True) + elif active_alignment == 'justify': + self.ribbon.align_justify_btn.setChecked(True) + + def get_current_alignment(self): + """获取当前段落的对齐方式""" + cursor = self.text_edit.textCursor() + block_format = cursor.blockFormat() + alignment = block_format.alignment() + + if alignment == Qt.AlignLeft: + return 'left' + elif alignment == Qt.AlignCenter: + return 'center' + elif alignment == Qt.AlignRight: + return 'right' + elif alignment == Qt.AlignJustify: + return 'justify' + else: + return 'left' # 默认返回左对齐 + + def on_cursor_position_changed(self): + """文本光标位置变化处理 - 更新对齐按钮状态""" + current_alignment = self.get_current_alignment() + self.update_alignment_buttons(current_alignment) + def update_weather_display(self, weather_data): """更新天气显示""" if 'error' in weather_data: