FBS 打包应用程序打开命令提示符然后关闭
FBS packed app open command prompt then closes
所以,当我 运行 fbs run
应用程序 运行 完美。但是,一旦我 运行 fbs freeze
并打开创建的 .exe 文件,windows 命令提示符就会打开,执行一些操作然后关闭(我无法检索日志)。通过使用 fbs installer
生成的安装程序安装的应用程序也会发生这种情况。 运行 fbs freeze --debug
不会显示任何奇怪的东西。
我的应用程序应该通过 chrome 网络驱动程序和使用 PyQt5 创建的 GUI window 打开 chrome。
我 运行 python 3.6.7 并且具有正确的 PyQt5 版本 (5.9.2)。
编辑
问题似乎是浏览器 = webdriver.Chrome("src/main/resources/windows/chromedriver") 引起的。我将 chromedriver.exe 存储在 src/main/resources/windows/
中
这是我的代码:
from fbs_runtime.application_context.PyQt5 import ApplicationContext
from PyQt5.QtWidgets import QMainWindow, QWidget, QLayout,QGridLayout, QLabel, QTabWidget, QSizePolicy
from PyQt5 import QtCore
from selenium import webdriver
browser = webdriver.Chrome("src/main/resources/windows/chromedriver")
class MainWindow(QMainWindow):
allItems = {"type":[], "name":[], "size":[], "colour":[]}
def __init__(self, parent = None):
super(MainWindow, self).__init__(parent)
self.main_widget = QTabWidget(self)
self.main_widget.setSizePolicy(QSizePolicy.Preferred,
QSizePolicy.Ignored)
#Main Window
self.itemWidget = QWidget(self)
self.main_layout = QGridLayout(self.itemWidget)
self.main_layout.sizeConstraint = QLayout.SetDefaultConstraint
nameLabel = QLabel("Name")
self.main_layout.addWidget(nameLabel, 0, 0)
self.nameInput = QLineEdit()
self.main_layout.addWidget(self.nameInput, 0, 1)
self.main_widget.addTab(self.itemWidget, "Main")
self.setCentralWidget(self.main_widget)
if __name__ == '__main__':
appctxt = ApplicationContext()
window = MainWindow() #QMainWindow object
window.resize(600, 300)
window.show()
exit_code = appctxt.app.exec_()
sys.exit(exit_code)
如果您需要更多详细信息,请告诉我。
你们中的一些人知道是什么导致了这种情况吗?
好的,我修复了 "bug"。原来 ApplicationContext.get_resource()
不访问位于 src\main\resources 的资源文件,而是访问 src\main\resources\base。知道了这一点,我就能够牢记这一点来组织我的项目。我希望这可以帮助以后的人。
所以,当我 运行 fbs run
应用程序 运行 完美。但是,一旦我 运行 fbs freeze
并打开创建的 .exe 文件,windows 命令提示符就会打开,执行一些操作然后关闭(我无法检索日志)。通过使用 fbs installer
生成的安装程序安装的应用程序也会发生这种情况。 运行 fbs freeze --debug
不会显示任何奇怪的东西。
我的应用程序应该通过 chrome 网络驱动程序和使用 PyQt5 创建的 GUI window 打开 chrome。
我 运行 python 3.6.7 并且具有正确的 PyQt5 版本 (5.9.2)。
编辑 问题似乎是浏览器 = webdriver.Chrome("src/main/resources/windows/chromedriver") 引起的。我将 chromedriver.exe 存储在 src/main/resources/windows/
中这是我的代码:
from fbs_runtime.application_context.PyQt5 import ApplicationContext
from PyQt5.QtWidgets import QMainWindow, QWidget, QLayout,QGridLayout, QLabel, QTabWidget, QSizePolicy
from PyQt5 import QtCore
from selenium import webdriver
browser = webdriver.Chrome("src/main/resources/windows/chromedriver")
class MainWindow(QMainWindow):
allItems = {"type":[], "name":[], "size":[], "colour":[]}
def __init__(self, parent = None):
super(MainWindow, self).__init__(parent)
self.main_widget = QTabWidget(self)
self.main_widget.setSizePolicy(QSizePolicy.Preferred,
QSizePolicy.Ignored)
#Main Window
self.itemWidget = QWidget(self)
self.main_layout = QGridLayout(self.itemWidget)
self.main_layout.sizeConstraint = QLayout.SetDefaultConstraint
nameLabel = QLabel("Name")
self.main_layout.addWidget(nameLabel, 0, 0)
self.nameInput = QLineEdit()
self.main_layout.addWidget(self.nameInput, 0, 1)
self.main_widget.addTab(self.itemWidget, "Main")
self.setCentralWidget(self.main_widget)
if __name__ == '__main__':
appctxt = ApplicationContext()
window = MainWindow() #QMainWindow object
window.resize(600, 300)
window.show()
exit_code = appctxt.app.exec_()
sys.exit(exit_code)
如果您需要更多详细信息,请告诉我。
你们中的一些人知道是什么导致了这种情况吗?
好的,我修复了 "bug"。原来 ApplicationContext.get_resource()
不访问位于 src\main\resources 的资源文件,而是访问 src\main\resources\base。知道了这一点,我就能够牢记这一点来组织我的项目。我希望这可以帮助以后的人。