wxpython和python-docx不兼容吗?

import wx 
from docx import Document 
	
def cs(self):
	doc = Document()
	bbTi=doc.add_heading('', 1)
	wjBj=bbTi.add_run('测试内容')
	print('写文档前')
	doc.save('1.docx')
	print('写文档后')

app = wx.App() 
frame=wx.Frame(None,title='测试')
panel=wx.Panel(frame,-1)
bt=wx.Button(panel,-1,label='测试')

bt.Bind(wx.EVT_BUTTON, cs)


frame.Show()
app.MainLoop()

以上是测试代码,python版本是3.7.1,运行后在save()行无任何提示终止了,有没有解决办法?

代码没有问题,运行结果正常,测试环境python3.7.6,docx0.8.10,wx4.1.0

虽然题主的代码在我这里可以正常运行并成功保存了文件,却是阴差阳错的结果:通常事件函数,比如题主的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()

bt.Bind(wx.EVT_BUTTON, cs)你这个还没调用函数,肯定报错了

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y