如何在具有事件支持的wxpython中使用activex

你好: 我想在wxpython程序中使用ActiveX,但是当我使用makeActivexClass时 发生例外. 这是我的源代码处理DICOM OCX.我必须注意,在此中 程序" HWTXControl"是OCX开发的我的ME ME使用VC6,此OCX作品 在wxpython中很好. 但是您可以看到我只使用新的DICOM OCX更改此OCX并设置 EventClass, 但是例外情况是: file". axw__init__ 文件" d:\ py22 \ lib \ site-packages \ win32com \ gen_py \ 3A75EE8D-8E68-43FF-A90A-E4835B9A3DBDX0X1X1X0.PY", 第187行,在__init__ cookie = cp.Advise(win32com.server.util.wrap(self, usePolicy = eventHandlerPolicy))) com_error:(-2147220990,'Connect_e_cannotConnect',无,无) OCX和源代码(在Delphi中)您可以在以下位置:http://www.psychology.nottingham.ac./dicomcom.html 来自wxpython.wx导入 * 来自wxpython.lib.rcsizer导入rowcolsizer 导入pywin.mfc.activex 导入ActiveXwrapper,win32UI 如果wxplatform =='__wxmsw__': 来自wxpython.lib.activexwrapper导入makeactivexClass 导入win32com.client.gencache 导入win32com.client 尝试: 导入HWTXControl hwtxocx = hwtxcontrol #IMPORT EZDICOM #dicomocx = ezdicom #dicomocx = win32com.client.gencache.ensuremodule(" {3A75EE8D-8E68-43FF-A90A-E4835B9A3DBD}",0,1,0) #dicomocx = win32com.client.dispatch(" ezdicomax.ezdi comx") dicomocx = win32com.client.gencache.ensuremodule('{3 A75EE8D-8E68-43FF-A90A-E4835B9A3DBD}', 0、1、0) 除了: 提高Importerror(" IE4或更高 安装.") dicomcontrol类(pywin.mfc.activex.control,dicomocx.ezdicomx): def __init __(自我): pywin.mfc.activex.control .__ init __(self) dicomocx.ezdicomx .__ init __(self) def ondcmmousedown(self,x,y,button,shift): 打印" DICOM OCX点击!" 类HWTXControl(pywin.mfc.activex.control,hwtxocx.hwtx): def __init __(自我): pywin.mfc.activex.control .__ init __(self) hwtxocx.hwtx .__ init __(self) def onclick(self): 打印" HWTX点击!" 类Testpanel(WXWINDOW): def __init __(自我,父,日志,框架= none): wxwindow .__ init __(self,parent,-1, 样式= wxclip_children | wxno_full_repaint_on_resize) sizer = wxboxsizer(wxvertical) hwtxctls = rowcolsizer() theclass2 = makeActivexClass(dicomocx.ezdicomx,eventClass = dico mcontrol) #theclass2 = makeactivexClass(hwtxocx.hwtx,eventClass = hwtxContr ol) self.ie4 = theclass2(self,-1) self.ie4.4.setsize(wxsize(300,300)) #self.ie4.fileName =" e:\\ d02.img" #self.ie4.palnumber = 12 #self.ie4.state = 1 hwtxctls.add(self.ie4,行= 2,col = 2) sizer.Add(hwtxctls,0,wxexpand) self.Seterizer(sizer) self.setautolayout(true) evt_window_destroy(self,self.ondestroy) Def Ondestroy(Self,EVT): 如果self.ie4: self.ie4.cleanup() self.ie4 =无 def runtest(帧,NB,日志): 如果wxplatform =='__wxmsw__': win = testpanel(nb,日志,框架) 返回胜利 别的: dlg = wxMessageDialog(框架,'此演示仅在MSW上起作用.',, "对不起",wxok | wtoxon_information) dlg.showmodal() dlg.destroy() 概述= __DOC__ 如果__name__ =='__ main __': 类TestFrame(WXFRAME): def __init __(自我): wxfra 我.__ init __(self,none,-1," ActiveX Test-互联网 探险家", 尺寸=(640,480), style = wxdefault_frame_style | wxno_full_repaint_on_r esize) self.createstatusbar() self.tp = testpanel(self,sys.stdout,self) evt_close(self,self.onclosewindow) def onclosewindow(self,evt): self.tp.destroy() self.destroy() app = wxpysimpleapp() 帧= testframe() frame.show(true) app.mainloop() 我是一个新的Python编程人员,但我真的很优雅地吸引了我 我真的想使用wxpython作为我的框架,但是如果我不能使用 ActiveX,我将不得不更改为VB :( 你能帮我吗. 真挚地 wangxiaoyu

# 回答1

我解决了问题.我的解决方案是:因为这个ActiveX(DICOM) 在VB中工作正常,我知道VB Works开发的ActiveX控件 在Python中很好,所以为什么我不能开发ActiveX控制 这个ActiveX(DICOM)?所以我构建了VB的ActiveX项目 IT中的ActiveX(DICOM),并将此控件(DICOM)事件委派给VB 控制事件. VB开发的这个ActiveX在WXPYTHON,MAKEACTIVEXCLASS上工作正常 工作正常. 但是我真的不明白为什么这种方法有效,你能给我吗 一些解释? 此致. wangxiaoyu wxthyde***@hotmail.com(Wang Xiaoyu)在消息新闻中写道: ...

标签: python

添加新评论