如何使用 Internet Explorer 控件在 Python 中创建 HTML 对话框窗口?

IT *_*DAV -4 html python com internet-explorer activex

我需要创建一个显示 HTML 页面的对话框。该应用程序是用 Python 编写的,并且对话框必须包含 Internet Explorer 控件。Python 是否支持与 COM/ActiveX 集成?是否有此类集成的工作示例?

If possible please provide an answer without links to third-party websites. Please do not offer .NET/C++/Chrome or any other combinations. Python+IE is my requirement and can not be changed.

mfi*_*tzp 5

您可以使用 wxWidgetsWebView组件(通过 wxPython)将 Internet Explorer 窗口嵌入到 Python GUI 应用程序中。与 Qt 等包含跨所有平台的标准化浏览器组件不同,wxWidgets 默认使用主机平台上的本机浏览器。您还可以通过手动设置后端来强制使用 IE(忽略用户的默认浏览器)。

在文档中它显示了WEBVIEW_BACKEND_IE,但实际值可以通过 获得wx.html2.WebViewBackendIE。以下是一个完整的工作示例,改编自此处

import wx 
import wx.html2 

class MyBrowser(wx.Frame): 
    def __init__(self, *args, **kwds): 
        wx.Frame.__init__(self, *args, **kwds) 
        sizer = wx.BoxSizer(wx.VERTICAL) 
        self.browser = wx.html2.WebView.New(self, backend=wx.html2.WebViewBackendIE) 
        sizer.Add(self.browser, 1, wx.EXPAND, 10) 
        self.SetSizer(sizer) 
        self.SetSize((700, 700)) 

if __name__ == '__main__': 
    app = wx.App() 
    dialog = MyBrowser(None, -1) 
    dialog.browser.LoadURL("https://www.google.com") 
    dialog.Show() 
    app.MainLoop() 
Run Code Online (Sandbox Code Playgroud)

当然,这仅适用于Windows。有关 wxWidgets 中 WebView 的更多信息,请参阅文档

如果您已经在应用程序中使用 (Py)Qt,Qt 还支持使用该类在窗口中嵌入 ActiveX 对象QAxWidgetQt 文档中有一个 Web 浏览器示例。下面是一个最小的PyQt4 示例

browser = QAxContainer.QAxWidget() 
browser.setControl("<ActiveX ID>") # e.g. "{8856F961-340A-11D0-A96B-00C04FD705A2}"
browser.dynamicCall('Navigate(const QString&)', QtCore.QString("google.com"))
Run Code Online (Sandbox Code Playgroud)