czjuntt
2021-05-10 19:29
采纳率: 100%
浏览 69
已采纳

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()行无任何提示终止了,有没有解决办法?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • CSDN专家-HGJ 2021-05-10 20:46
    已采纳

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

    已采纳该答案
    评论
    解决 1 无用
    打赏 举报
  • 天元浪子 2021-05-11 08:38

    虽然题主的代码在我这里可以正常运行并成功保存了文件,却是阴差阳错的结果:通常事件函数,比如题主的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()
    评论
    解决 1 无用
    打赏 举报
  • CSDN专家-黄老师 2021-05-10 19:49

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

    评论
    解决 无用
    打赏 举报
  • 有问必答小助手 2021-05-11 11:01

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

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

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

    评论
    解决 无用
    打赏 举报
  • 有问必答小助手 2021-05-11 16:28

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

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

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题