新人求助wxPython中嵌入ActiveX控件的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新人求助wxPython中嵌入ActiveX控件的问题相关的知识,希望对你有一定的参考价值。
参考技术A 我用wx.lib.activexwrapper 中的 MakeActiveXClass类在界面中嵌入ActiveX控件,一般的控件都没有问题下面是我的代码:
import wx
from wx.lib.activexwrapper import MakeActiveXClass
import win32com.client.gencache as win32
mediaControl = win32.EnsureModule('6BF52A50-394A-11D3-B153-00C04F79FAA6',0,1,0)
print dir(mediaControl)
if mediaControl is None:
raise ImportError("Can't load wmp. Make sure you have wmp installed.")
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'MediaPlayer',(50,50),(800,600)) #初始化一个窗口
p=wx.Panel(self)
ActiveXWrapper =MakeActiveXClass(mediaControl.WindowsMediaPlayer)
self.med = ActiveXWrapper(p,-1)
if __name__=="__main__":
app=wx.PySimpleApp()
media1=MyFrame()
media1.Show()
app.MainLoop()
运行结果:
Traceback (most recent call last):
File "D:\JQC\Python\IDE\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 310, in RunScript
exec codeObject in __main__.__dict__
File "D:\pyhtontest\Mymedia_client_3.py", line 58, in ?
media1=MyFrame()
File "D:\pyhtontest\Mymedia_client_3.py", line 25, in __init__
self.med = ActiveXWrapper(p,-1)
File "D:\JQC\Python\IDE\lib\site-packages\wx-2.8-msw-unicode\wx\lib\activexwrapper.py", line 119, in axw__init__
(0, 0, sz.width, sz.height), self._wnd, ID)
File "D:\JQC\Python\IDE\Lib\site-packages\pythonwin\pywin\mfc\activex.py", line 23, in CreateControl
self.__dict__["_obj_"] = win32ui.CreateControl(clsid, windowTitle, style, rect, parent, id, None, False, lic_string)
win32ui: The window can not be created as it has an invalid handle
同样方法用在别的控件上不会出错,我还试过日历控件,Quicktime,realplayer(结果嵌入的是音频的)
我试过别的方法嵌入media player控件,比如用wx.media.MediaCtrl,这可能是最简单的方法了,但是只能载入WMP6.4的,6.4在连接http服务器播放流媒体时会出错。本回答被提问者和网友采纳
将控件(ActiveX或非ActiveX)添加到图表(Excel VBA)
答案
即使列表框位于图表工作表上,您也应该在列表填充范围和链接单元格的某处使用一些工作表空间。在VBA中访问这些范围要比从列表框中获取这些范围更容易,更健壮。
说到可靠性,所有控件的Form版本将比ActiveX类似物更可靠。
以上是关于新人求助wxPython中嵌入ActiveX控件的问题的主要内容,如果未能解决你的问题,请参考以下文章
当嵌入式 ActiveX 控件接收并失去键盘焦点时如何获得通知?
如何根据浏览器在同一页面上嵌入 32 位或 64 位 ActiveX 控件?