diff --git a/src/ui/quote_floating_widget.py b/src/ui/quote_floating_widget.py index ae740b7..ad37bfe 100644 --- a/src/ui/quote_floating_widget.py +++ b/src/ui/quote_floating_widget.py @@ -18,6 +18,7 @@ class QuoteFloatingWidget(QWidget): # 定义信号 closed = pyqtSignal() # 窗口关闭信号 refresh_requested = pyqtSignal() # 刷新请求信号 + insert_requested = pyqtSignal(str) # 插入请求信号,传递要插入的文本 def __init__(self, parent=None): super().__init__(parent) @@ -111,6 +112,13 @@ class QuoteFloatingWidget(QWidget): bottom_layout.addWidget(self.refresh_btn) bottom_layout.addStretch() + + # 插入按钮 + self.insert_btn = QPushButton("插入") + self.insert_btn.setObjectName("insertButton") + self.insert_btn.clicked.connect(self.on_insert_clicked) + bottom_layout.addWidget(self.insert_btn) + main_layout.addLayout(bottom_layout) # 设置主布局 @@ -184,7 +192,7 @@ class QuoteFloatingWidget(QWidget): color: white; border-radius: 6px; }} - QPushButton#refreshButton {{ + QPushButton#refreshButton, QPushButton#insertButton {{ background-color: {colors['accent']}; color: white; border: none; @@ -193,7 +201,7 @@ class QuoteFloatingWidget(QWidget): font-size: 11px; font-weight: 500; }} - QPushButton#refreshButton:hover {{ + QPushButton#refreshButton:hover, QPushButton#insertButton:hover {{ background-color: {colors['accent_hover']}; }} """) @@ -254,7 +262,7 @@ class QuoteFloatingWidget(QWidget): color: white; border-radius: 6px; }} - QPushButton#refreshButton {{ + QPushButton#refreshButton, QPushButton#insertButton {{ background-color: {colors['accent']}; color: white; border: none; @@ -263,7 +271,7 @@ class QuoteFloatingWidget(QWidget): font-size: 11px; font-weight: 500; }} - QPushButton#refreshButton:hover {{ + QPushButton#refreshButton:hover, QPushButton#insertButton:hover {{ background-color: {colors['accent_hover']}; }} """) @@ -295,6 +303,22 @@ class QuoteFloatingWidget(QWidget): # 同时直接获取新的内容并更新显示 self.fetch_and_update_quote() + def on_insert_clicked(self): + """插入按钮点击事件""" + # 发送插入请求信号,传递完整的诗句信息 + quote = self.quote_data.get("quote", "") + author = self.quote_data.get("author", "佚名") + source = self.quote_data.get("source", "") + + # 构造完整的诗句文本 + if source: + full_quote_text = f"{quote} —— {author}《{source}》" + else: + full_quote_text = f"{quote} —— {author}" + + if quote: + self.insert_requested.emit(full_quote_text) + def fetch_and_update_quote(self): """获取新的谏言内容并更新显示""" try: diff --git a/src/word_main_window.py b/src/word_main_window.py index 8d8929a..4f4851d 100644 --- a/src/word_main_window.py +++ b/src/word_main_window.py @@ -121,6 +121,7 @@ class WordStyleMainWindow(QMainWindow): self.quote_floating_widget.hide() # 默认隐藏 self.quote_floating_widget.closed.connect(self.on_quote_floating_closed) self.quote_floating_widget.refresh_requested.connect(self.refresh_daily_quote) + self.quote_floating_widget.insert_requested.connect(self.insert_quote_to_cursor) # 设置窗口属性 self.setWindowTitle("文档1 - MagicWord") @@ -1800,6 +1801,20 @@ class WordStyleMainWindow(QMainWindow): """每日谏言悬浮窗口关闭时的处理""" self.status_bar.showMessage("每日谏言悬浮窗口已关闭", 2000) + def insert_quote_to_cursor(self, quote_text): + """将古诗句插入到光标位置""" + if hasattr(self, 'text_edit'): + # 获取当前光标位置 + cursor = self.text_edit.textCursor() + + # 在光标位置插入文本 + cursor.insertText(quote_text + "\n") + + # 更新状态栏提示 + # 从文本中提取诗句部分用于显示 + quote_only = quote_text.split(" —— ")[0] if " —— " in quote_text else quote_text + self.status_bar.showMessage(f"已插入古诗句: {quote_only}", 3000) + def toggle_weather_tools(self, checked): """切换天气工具组显示""" if checked: