我正在使用 QtWebEngineWidgets
,QtWebChannel
创建使用HTML,CSS,JavaScript的PyQt5应用程序。
当我们以一般方式运行时,它工作正常,即 python main.py
如下导入HTML,
current_dir = os.path.dirname(os.path.realpath(__file__))
filename = os.path.join(current_dir, "index.html")
url = QtCore.QUrl.fromLocalFile(filename)
如下导入CSS,JavaScript文件,
# in index.html
<link rel="stylesheet" href="styles.css">
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="my_custom.js"></script>
现在,我尝试使用创建一个独立.exe
文件pyinstaller
。
def resource_path(relative_path):
""" Get absolute path to resource, works for dev and for PyInstaller """
try:
# PyInstaller creates a temp folder and stores path in _MEIPASS
base_path = sys._MEIPASS
except Exception:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
pyinstaller命令:
pyinstaller --onefile --windowed main.py
我需要在生成的.exe
文件中手动添加静态文件才能按预期工作。我想将其包含在.exe
文件本身中。如何得到这个?
根据您的问题,您可以假定您的项目结构如下:
├── index.html
├── jquery.js
├── main.py
├── my_custom.js
└── styles.css
对于您的情况,有2个选项:
使用 --add-data
import os
import sys
from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets
def resource_path(relative_path):
“”” Get absolute path to resource, works for dev and for PyInstaller “”“
try:
# PyInstaller creates a temp folder and stores path in _MEIPASS
base_path = sys._MEIPASS
except Exception:
base_path = os.path.abspath(“.”)
return os.path.join(base_path, relative_path)
if name == “main”:
import sys
app = QtWidgets.QApplication(sys.argv)
view = QtWebEngineWidgets.QWebEngineView()
filename = resource_path("index.html")
url = QtCore.QUrl.fromLocalFile(filename)
view.load(url)
view.show()
sys.exit(app.exec_())
如果要将外部资源添加到可执行文件,则必须使用“ –add-data”选项:
pyinstaller --onefile --windowed --add-data="index.html:." --add-data="jquery.js:." --add-data="my_custom.js:." --add-data="styles.css:." main.py
对于Windows,将“:”更改为“;”。
.qrc
使用此方法,您将使用pyrcc5将文件(.html,.css,.js等)转换为.py代码,为此,您必须执行以下步骤:
2.1。在项目文件夹中创建一个名为resource.qrc的文件,其中包含以下内容:
<RCC>
<qresource prefix="/">
<file>index.html</file>
<file>jquery.js</file>
<file>my_custom.js</file>
<file>styles.css</file>
</qresource>
</RCC>
2.2使用pyrcc5将其转换为.py:
pyrcc5 resource.qrc -o resource_rc.py
2.3导入resource_rc.py文件,并在main.py文件中使用带有模式“ qrc”的url:
import os
import sys
from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets
import resource_rc
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
view = QtWebEngineWidgets.QWebEngineView()
url = QtCore.QUrl("qrc:/index.html")
view.load(url)
view.show()
sys.exit(app.exec_())
2.4使用初始命令编译项目
pyinstaller --onefile --windowed main.py
背景资料 我有一个spring boot应用程序,它有文件添加到资源文件的文件夹中,该文件最终内置到执行中使用的jar文件中。 这个jar应用程序需要在不同客户机的多个实例中运行。所以我所做的就是创建一个外部文件,用于区分每个用户的设置。http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-exter
我想使用java创建log.html文件,当错误被捕获时,我会将错误转储到html table-row中。我创建了表列,但是当我向它传递任何内容时,我的数据会覆盖列名而不是附加行。我的java代码如下: 以下是writetofile方法:
问题内容: 我是新手,并且已经学习了很多天,我已经开始使用django建立一个小型网站,并尝试通过在文件中安排所有必要的设置来提供文件。但不幸的是,我的代码无法提供CSS文件,我的意思是提供CSS文件的概念无法正常工作。我在Google上搜索了很多东西,并浏览了django主要文档教程,并根据它们进行了更改,但仍然无法正常工作,因此将我的整个代码粘贴到了下面 项目文件夹的结构 我的一些settin
动态的 web 应用也需要静态文件,一般是 CSS 和 JavaScript 文件。理想情况下你的 服务器已经配置好了为你的提供静态文件的服务。在开发过程中, Blade 也能做好这个工作。我们在 resources 目录下创建一个名为 static 的文件夹存储静态资源文件,静态文件位于 应用的 /static 中。 Blade 默认设置了 static、assets、webjars、uploa
我在学烧瓶。我知道要在处为静态文件生成url,我需要执行以下操作:。我还知道我可以使用模板生成HTML,使用,它将在处返回jinja模板的HTML输出。 但是,我不确定如何在jinja模板中返回到静态文件的链接--或者我是否应该这样返回链接到静态HTML/CSS的HTML。 基本上,我如何在jinja模板中返回到用python动态生成的URL的链接?这似乎不可能。那么人们做什么呢?如果您只是在模板