虽然题主的代码在我这里可以正常运行并成功保存了文件,却是阴差阳错的结果:通常事件函数,比如题主的cs函数,需要封装成wx.Frame的实例方法,这样,事件函数既可以访问窗口实例的成员,也可以接收事件对象。
另外,题主的代码无法运行,可能是题主已经打开了1.docx这个文件。如果不是,建议题主注释掉11行之后的代码,增加一行cs(None),运行一下,就可以判断问题是不是和wx有关系了。
最后,帮题主修改了一下代码,请参考。
import wx
from docx import Document
class mainFrame(wx.Frame):
'''程序主窗口类,继承自wx.Frame'''
def __init__(self):
'''构造函数'''
wx.Frame.__init__(self, None, -1, '基本框架', style=wx.DEFAULT_FRAME_STYLE)
self.SetSize((800, 600)) # 设置窗口大小
self.Center() # 窗口居中
# 以下可以添加各类控件、
p = wx.Panel(self, -1)
btn = wx.Button(p, -1, label='测试', pos=(100,50), size=(60,-1))
btn.Bind(wx.EVT_BUTTON, self.cs)
def cs(self, evt):
"""响应点击按钮事件"""
doc = Document()
bbTi = doc.add_heading('', 1)
wjBj = bbTi.add_run('测试内容')
print('写文档前')
doc.save('1.docx')
print('写文档后')
class mainApp(wx.App):
def OnInit(self):
self.Frame = mainFrame()
self.Frame.Show()
return True
if __name__ == "__main__":
app = mainApp()
app.MainLoop()