FBS упакованное приложение открывает командную строку, затем закрывается - PullRequest
0 голосов
/ 04 ноября 2019

Итак, когда я запускаю fbs run, приложение работает отлично. Тем не менее, как только я запускаю fbs freeze и открываю созданный .exe-файл, открывается командная строка Windows, выполняет какие-то действия, а затем закрывается (я не могу получить журнал). Это происходит с приложением, установленным через установщик, сгенерированный с fbs installer. Запуск fbs freeze --debug не покажет ничего странного.

Предполагается, что мое приложение открывает chrome через chromewebdriver и окно графического интерфейса пользователя, созданное с помощью PyQt5.

Я запускаю 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)

Дайте мне знать, если вам нужна дополнительная информация.

Сделалкто-нибудь из вас имеет представление о том, что может вызвать это?

1 Ответ

0 голосов
/ 06 ноября 2019

Хорошо, я исправил свою "ошибку". Оказывается, ApplicationContext.get_resource() не обращается к файлу ресурса, расположенному в src \ main \ resources, но обращается к src \ main \ resources \ base. Зная это, я смог организовать свой проект, помня об этом. Я надеюсь, что это может помочь кому-то позже.

...