正在尝试使用Pycharm编写一个GUI程序,使用的是Python3.10.4版本,Pyqt5的版本5.15.9,word是office2021中的,是激活工具激活的。GUI程序的主要功能是新建、打开、保存、另存为和编辑功能。后续会加上其他功能。但是在运行下面基本功能代码时总是报错。
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog
from PyQt5.QAxContainer import QAxWidget
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.word = QAxWidget('Word.Application.16')
self.word.setProperty('Visible', False)
self.setCentralWidget(self.word)
self.create_actions()
self.create_menus()
def create_actions(self):
self.new_action = self.menuBar().addAction('New', self.new_document)
self.open_action = self.menuBar().addAction('Open', self.open_document)
self.save_action = self.menuBar().addAction('Save', self.save_document)
self.save_as_action = self.menuBar().addAction('Save As', self.save_as_document)
def create_menus(self):
file_menu = self.menuBar().addMenu('File')
file_menu.addAction(self.new_action)
file_menu.addAction(self.open_action)
file_menu.addAction(self.save_action)
file_menu.addAction(self.save_as_action)
def new_document(self):
self.word.dynamicCall('Documents.Add()')
def open_document(self):
file_name, _ = QFileDialog.getOpenFileName(self, 'Open Document', '', 'Word Documents (*.docx)')
if file_name:
self.word.dynamicCall('Documents.Open(const QString&)', file_name)
# self.word.setControl(file_name)
def save_document(self):
self.word.dynamicCall('ActiveDocument.Save()')
def save_as_document(self):
file_name, _ = QFileDialog.getSaveFileName(self, 'Save Document As', '', 'Word Documents (*.docx)')
if file_name:
self.word.dynamicCall('ActiveDocument.SaveAs(const QString&)', file_name)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
使用新建和打开功能时提示如下问题
QAxBase::dynamicCallHelper: Documents.Open(QString): No such property in {000209ff-0000-0000-c000-000000000046} [Microsoft Word Application]
Candidates are:
DataPrivacyOptions
DefaultLegalBlackline
DefaultSaveFormat
DefaultTableSeparator
Dialogs
DisplayAlerts
DisplayAutoCompleteTips
DisplayDocumentInformationPanel
DisplayRecentFiles
DisplayScreenTips
DisplayScrollBars
DisplayStatusBar
Documents
DontResetInsertionPointProperties
Dummy1
使用保存和另存为功能时报出以下问题
QAxBase::dynamicCallHelper: ActiveDocument.Save(): No such property in {000209ff-0000-0000-c000-000000000046} [Microsoft Word Application]
Candidates are:
ActiveDocument
ActiveEncryptionSession
ActivePrinter
ActiveProtectedViewWindow
ActiveWindow
AddIns
AnswerWizard
Application
ArbitraryXMLSupportAvailable
Assistance
Assistant
AutoCaptions
AutoCorrect
AutoCorrectEmail
AutomationSecurity
但是如果使用下面的代码就能够打开word文件。
self.word.setControl(file_name)
请帮忙指点一下迷津,找了很多办法,重装系统,重装office,换新版本的Python,设置word的ActiveX控件,查看word的ProID和CLSID等等都不行。