kivy - 在 Kivy 屏幕中嵌入 cefpython
问题描述
我正在构建一个带有 2 个屏幕的简单 Kivy 应用程序。第一个屏幕有一个简单的按钮,单击该按钮会转到第二个屏幕,并应在嵌入式浏览器中打开特定网站(例如 google.com)。我知道 Kivy 本身并不支持嵌入式浏览器,所以我使用了 cefpython。顺便说一句,我正在为应用程序使用 Python 3 和 Kivy 1.11.1。
https://github.com/cztomczak/cefpython
简单的 hello-world 示例使用 cefpython3 并且似乎运行良好。
https://github.com/cztomczak/cefpython/blob/master/docs/Tutorial.md#hello-world
问题是这段代码会在 Kivy 应用程序上打开一个新的应用程序窗口并暂停其执行,直到浏览器窗口关闭。我想要实现的是在 Kivy 应用程序屏幕中打开 url。
所以,我遇到了这个在 Kivy 中嵌入 cefpython 的例子:
https://github.com/cztomczak/cefpython/blob/master/src/linux/binaries_64bit/kivy_.py
但似乎这个例子需要 Python 3 不支持的 pygtk2。因此,我无法让它工作。此外,对于尝试打开 URL 之类的简单活动,该代码看起来有点矫枉过正。
有人可以指导我如何在 Kivy 中嵌入 cefpython 或任何其他嵌入式浏览器的工作示例吗?
解决方案
我可以通过使用来自 deadsnake 的 Ubuntu 20.04、Python 3.7 获得基本和错误的功能我安装了 Kivy 2 并 pip install Cefpython3==66.0 然后我 git clone 这个存储库 https://github.com/allestuetsmerweh/garden.cefpython
然后我按照建议创建了一个符号链接:
ln -s path/to/this/garden.cefpython ~/.kivy/garden/garden.cefpython
您必须从 garden.cefpython 进入源文件 cefbrowser.py 并更改一些内容,主要是设置为 none 但 nonevalue 的命名参数未检查或传递给函数但函数未声明的命名参数.
毕竟,一些示例似乎有点作用,但内容安全策略存在很多问题。我仍在处理 controls.py 示例以尝试更改 url ...
推荐阅读
- javascript - 为什么我的 js 计算器不能与 html 结合使用?
- php - 单击数组以加载配置
- swift - 是否存在确定类型应该可以用字符串初始化的协议?
- python - ValueError: 对已关闭文件的 I/O 操作。Python, Django , Boto3
- angularjs - 如何使用 Chart.js 为 Bonita Soft 构建饼图?
- mysql - 如何在不使用 CONCAT() 的情况下连接字段
- android - WorkManager 的 ForceStopRunnable 中的 SQLiteException
- python - Python setuptools 无法在 user_config_dir 中安装 data_files
- php - 将子文件夹指向根目录而不更改 URL
- java - 如何从 Java 8 Streams 中获取 Inputstream?