|
发表于 2024-3-28 08:58:43
|
显示全部楼层
明白了。下面是一个完整的示例代码,其中包含了PySide6的GUI界面和文件操作的实现:import osfrom PySide6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QLabel, QTextEdit, QPushButton, QFileDialogclass MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("规则编辑器") # 创建主窗口布局 layout = QVBoxLayout() label = QLabel("输入规则:") self.text_edit = QTextEdit() layout.addWidget(label) layout.addWidget(self.text_edit) # 创建保存按钮 save_button = QPushButton("保存") save_button.clicked.connect(self.save_rules) layout.addWidget(save_button) # 创建主窗口部件 central_widget = QWidget() central_widget.setLayout(layout) self.setCentralWidget(central_widget) def save_rules(self): rules = self.text_edit.toPlainText().split('\n') rule_dict = {} for rule in rules: if not rule.strip(): continue key, value = rule.split(':', 1) # 使用冒号分隔规则分类和规则内容 rule_dict.setdefault(key, []).append(value.strip()) print(rule_dict) self.generate_document(rule_dict) # 调用生成文档的方法 def generate_document(self, rule_dict): doc_folder = QFileDialog.getExistingDirectory(None, "选择保存路径") # 弹出文件夹选择对话框 if not doc_folder: # 如果用户没有选择文件夹,则返回 return doc_path = os.path.join(doc_folder, "123.docx") # Word文档路径 try: # 导入所需的库 from win32com.client import Dispatch import tempfile # 根据操作系统内安装的Office或者Wps来创建文档 if os.path.exists("C:\Program Files\Microsoft Office\root\Office16\WINWORD.EXE"): word = Dispatch("Word.Application") else: word = Dispatch("kwps.Application") # 创建一个Word文档 doc = word.Documents.Add() for k, v in rule_dict.items(): # 写入规则分类 doc.Content.InsertAfter(f"{k}规则:\n") # 逐条写入规则内容 for rule in v: doc.Content.InsertAfter(f"{rule}\n") # 用户输入完毕后,保存文档 doc.SaveAs(doc_path) doc.Close() word.Quit() # 关闭Word应用 print("文档生成成功!") except Exception as e: print(f"文档生成失败:{e}")if __name__ == "__main__": app = QApplication() window = MainWindow() window.show() app.exec()在这个示例代码中,我们添加了一个选择保存路径的文件夹对话框,并根据用户选择的文件夹路径以及规则字典生成相应的Word文档。请确保你的操作系统上已经安装了Microsoft Office或者WPS Office。另外,为了使用win32com库,你可能需要通过pip安装`pywin32`模块。在用户输入完毕之后,文档将会自动保存到指定的文件夹中。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|