【问题标题】:pywebview doesn't show anythingpywebview 不显示任何内容
【发布时间】:2022-10-18 16:23:35
【问题描述】:

我安装了这些库:

>pip freeze | findstr pythonnet
pythonnet==3.0.0a2
>pip freeze | findstr clr-loader
clr-loader==0.1.7
>pip freeze | findstr pywebview
pywebview==3.6.3

我创建了一个包含以下内容的 test.py: 代码是:

import webview
webview.create_window('Hello world', 'https://pywebview.flowrl.com/')
webview.start()

我在 Windows 10 上,结果是一个空白页: screen

【问题讨论】:

  • 您的图像在页面上显示Hello world。您期望页面是什么样的?
  • @j_b“你好世界”是标题。我必须看到这个页面:pywebview.flowrl.com

标签: python-3.x pywebview


【解决方案1】:

同样在这里。简而言之:

显然,webview(这里:c:/Users/<your_user>/AppData/Local/Packages/PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0/LocalCache/local-packages/Python310/site-packages/webview/lib)的 pip 安装包目录中的Microsoft.Web.WebView2.Core.dll 无法在该目录中的arch 子文件夹x64x86 中找到相应的WebView2Loader.dll

找出你的Microsoft WebView2 Runtime(很可能是x64)的拱门,然后从相应的子目录中复制一个dll。

怎么能查到呢?

添加try/except块,在webview包的edgechromium.py中添加CoreWebView2(args.InitializationException)初始化不成功的代码,edgechromium是webview默认的gui

   def on_webview_ready(self, sender, args):
        try:
            logger.debug('### on_webview_ready')
            logger.debug('---> '+str(args.InitializationException))
            sender.CoreWebView2.NewWindowRequested += self.on_new_window_request
            settings = sender.CoreWebView2.Settings
            settings.AreDefaultContextMenusEnabled = _debug['mode']
            settings.AreDefaultScriptDialogsEnabled = True
            settings.AreDevToolsEnabled = _debug['mode']
            settings.IsBuiltInErrorPageEnabled = True
            settings.IsScriptEnabled = True
            settings.IsWebMessageEnabled = True
            settings.IsStatusBarEnabled = _debug['mode']
            settings.IsZoomControlEnabled = True

            if _user_agent:
                settings.UserAgent = _user_agent

            if self.html:
                sender.CoreWebView2.NavigateToString(self.html)

            logger.debug('-----------> '+str(sender.CoreWebView2))

        except Exception as e:
            logger.exception(str(e))

这会抛出错误(德语),可以找到 arg 名称 here

[pywebview] ---> Die DLL "WebView2Loader.dll": Das angegebene Modul wurde nicht gefunden. (Ausnahme von HRESULT: 0x8007007E) kann nicht geladen werden.
   bei Microsoft.Web.WebView2.Core.CoreWebView2Environment.CreateCoreWebView2EnvironmentWithOptions(String browserExecutableFolder, String userDataFolder, ICoreWebView2EnvironmentOptions options, ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler en
vironment_created_handler)
   bei Microsoft.Web.WebView2.Core.CoreWebView2Environment.<CreateAsync>d__3.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Microsoft.Web.WebView2.WinForms.WebView2.<InitCoreWebView2Async>d__13.MoveNext()
[pywebview] 'NoneType' object has no attribute 'NewWindowRequested'
Traceback (most recent call last):
  File "C:Users<your_user>AppDataLocalPackagesPythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0LocalCachelocal-packagesPython310site-packageswebviewplatformsedgechromium.py", line 153, in on_webview_ready
    sender.CoreWebView2.NewWindowRequested += self.on_new_window_request
AttributeError: 'NoneType' object has no attribute 'NewWindowRequested'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-29
    • 2020-11-10
    • 2012-04-12
    • 2019-11-11
    • 2017-09-25
    • 2012-08-02
    • 2019-08-11
    • 2018-06-25
    相关资源
    最近更新 更多