PROMPT
1.背景要求:我需要开发一个简单的粘贴小工具,用于方便地粘贴和管理文本内容。该工具需要具备以下功能:粘贴功能:提供一个文本框,用户可以粘贴内容。窗口置顶:支持窗口置顶功能,确保窗口不会被其他窗口遮挡。黑暗模式:支持切换黑暗模式,适应不同的使用环境。字体放大缩小:支持动态调整文本框的字体大小。界面简洁:界面简洁易用,功能按钮布局合理。
2. 技术选型编程语言:PythonGUI 框架:PyQt5打包工具:Nuitka
3. 功能需求核心功能粘贴功能:提供一个文本框,用户可以粘贴内容。文本框支持多行文本。窗口置顶:提供一个按钮,点击后窗口置顶,再次点击取消置顶。按钮文本动态显示当前状态(如“置顶”和“置顶中”)。黑暗模式:提供一个按钮,点击后切换黑暗模式,再次点击恢复默认模式。按钮文本动态显示当前状态(如“浅🌞”和“黑🌙”)。黑暗模式下,窗口背景、菜单栏和文本框的颜色变为深色。字体放大缩小:提供两个按钮,分别用于放大和缩小文本框的字体大小。字体大小调整范围:最小 1pt,最大无限制。界面布局:主窗口大小为 400x500,居中显示。菜单栏位于窗口顶部,包含置顶按钮、黑暗模式按钮、放大和缩小按钮。文本框占据主窗口的中央区域。
4.非功能需求启动速度:程序启动速度快,用户体验流畅。跨平台支持:支持 Windows、macOS 和 Linux 系统。可扩展性:代码结构清晰,便于后续功能扩展。
参考代码
主窗口模块:
class CustomWindow(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle("粘贴小工具")self.resize(400, 500)self.center_window()self.init_ui()def init_ui(self):# 创建文本编辑器self.text_edit = QTextEdit(self)font = self.text_edit.font()font.setPointSize(12)self.text_edit.setFont(font)self.setCentralWidget(self.text_edit)# 创建菜单栏self.menu_bar = QMenuBar(self)self.setMenuBar(self.menu_bar)self.create_actions()
菜单栏模块:
def create_actions(self):# 置顶按钮self.topmost_action = QAction("置顶", self)self.topmost_action.setCheckable(True)self.topmost_action.triggered.connect(self.toggle_topmost)self.menu_bar.addAction(self.topmost_action)# 黑暗模式按钮self.dark_mode_action = QAction("浅🌞", self)self.dark_mode_action.setCheckable(True)self.dark_mode_action.triggered.connect(self.toggle_dark_mode)self.menu_bar.addAction(self.dark_mode_action)# 放大和缩小按钮self.zoom_in_button = QPushButton("放大", self)self.zoom_in_button.clicked.connect(self.zoom_in)self.zoom_out_button = QPushButton("缩小", self)self.zoom_out_button.clicked.connect(self.zoom_out)# 将按钮添加到菜单栏右侧self.menu_bar.setCornerWidget(self.create_button_widget())
黑暗模式模块:
def toggle_dark_mode(self, checked):self.is_dark_mode = checkedself.set_dark_mode(self.is_dark_mode)# 切换按钮文本if self.is_dark_mode:self.dark_mode_action.setText("黑🌙")else:self.dark_mode_action.setText("浅🌞")def set_dark_mode(self, enabled):if enabled:# 设置黑暗模式样式表dark_stylesheet = """QWidget {background-color: #2D2D2D;color: #FFFFFF;}QMenuBar {background-color: #2D2D2D;color: #FFFFFF;}QMenuBar::item {background-color: transparent;color: #FFFFFF;}QMenuBar::item:selected {background-color: #555555;}QTextEdit {background-color: #1E1E1E;color: #FFFFFF;}QPushButton {background-color: #555555;color: #FFFFFF;border: none;padding: 5px;}QPushButton:hover {background-color: #777777;}"""self.setStyleSheet(dark_stylesheet)else:# 恢复默认样式表self.setStyleSheet("")
放大缩小功能:
def zoom_in(self):"""放大文本编辑器字体"""font = self.text_edit.font()font.setPointSize(font.pointSize() + 1)self.text_edit.setFont(font)def zoom_out(self):"""缩小文本编辑器字体"""font = self.text_edit.font()if font.pointSize() > 1: # 确保字体大小不小于 1font.setPointSize(font.pointSize() - 1)self.text_edit.setFont(font)
最终效果