feat(配置对话框): 添加Playwright目录浏览功能

在配置对话框中新增Playwright目录选择功能,允许用户手动指定浏览器路径
This commit is contained in:
2026-01-22 16:19:57 +08:00
parent 10ce2ba17b
commit 5d79cd9e8f
4 changed files with 24 additions and 86 deletions

View File

@@ -4,7 +4,7 @@ PySide6 GUI界面模块
from PySide6.QtWidgets import (QWidget, QVBoxLayout, QHBoxLayout, QLabel,
QPushButton, QSlider, QDialog, QFormLayout,
QLineEdit, QSpinBox, QMessageBox, QSystemTrayIcon,
QMenu, QTextEdit, QGroupBox, QDialogButtonBox, QCheckBox, QScrollArea)
QMenu, QTextEdit, QGroupBox, QDialogButtonBox, QCheckBox, QScrollArea, QFileDialog)
from PySide6.QtCore import Qt, QTimer, Signal, QPoint
from PySide6.QtGui import QFont, QColor, QPainter, QBrush, QPen, QIcon, QAction, QPixmap
from typing import Callable, Optional
@@ -153,6 +153,16 @@ class ConfigDialog(QDialog):
layout.addRow("User Agent:", self.user_agent_edit)
layout.addRow("刷新间隔(s):", self.interval_spin)
# Playwright目录配置
playwright_dir_layout = QHBoxLayout()
self.playwright_dir_edit = QLineEdit(spider_config.get('playwright_dir', ''))
self.playwright_dir_edit.setPlaceholderText("留空则自动查找Playwright浏览器")
self.playwright_browse_btn = QPushButton("浏览...")
self.playwright_browse_btn.clicked.connect(self._browse_playwright_dir)
playwright_dir_layout.addWidget(self.playwright_dir_edit)
playwright_dir_layout.addWidget(self.playwright_browse_btn)
layout.addRow("Playwright目录:", playwright_dir_layout)
# UI 配置
ui_config = self.config_manager.ui_config
@@ -186,6 +196,17 @@ class ConfigDialog(QDialog):
button_box.rejected.connect(self.reject)
layout.addRow(button_box)
def _browse_playwright_dir(self):
"""浏览Playwright目录"""
directory = QFileDialog.getExistingDirectory(
self,
"选择Playwright浏览器目录",
"",
QFileDialog.ShowDirsOnly | QFileDialog.DontResolveSymlinks
)
if directory:
self.playwright_dir_edit.setText(directory)
def _save_config(self):
"""保存配置"""
# LLM API
@@ -201,7 +222,8 @@ class ConfigDialog(QDialog):
target_url=self.url_edit.text(),
xpath=self.xpath_edit.text(),
user_agent=self.user_agent_edit.text(),
fetch_interval=self.interval_spin.value()
fetch_interval=self.interval_spin.value(),
playwright_dir=self.playwright_dir_edit.text()
)
# UI