|
|
|
|
@ -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:
|
|
|
|
|
|