我正在尝试使用FMan FBS将我的 GUI 应用程序打包到一个应用程序中。我能够创建和打开基本的普通应用程序;但是,当我尝试将自己的代码集成到默认代码中时,一旦我尝试运行应用程序,它就会立即关闭而不运行。
这是默认代码:
from fbs_runtime.application_context.PyQt5 import ApplicationContext
from PyQt5.QtWidgets import QMainWindow
import sys
if __name__ == '__main__':
# 1. Instantiate ApplicationContext
appctxt = ApplicationContext()
window = QMainWindow()
window.resize(250, 150)
window.show()
# 2. Invoke appctxt.app.exec_()
exit_code = appctxt.app.exec_()
sys.exit(exit_code)
这有效。但是,我的应用程序在布局方面工作很多,所以我使用 QWidget 作为我的窗口而不是 QMainWindow。相信这可能是程序打包时打不开的原因。
这是我的代码示例:
class Interface:
def __init__(self):
self.app = QApplication([])
def main(self):
window = QWidget()
window.setGeometry(550, 300, 850, 550)
window.setWindowTitle("GUI")
layout = QGridLayout()
self.app.setStyle("Fusion")
tabs = QTabWidget()
tab1 = QWidget()
tab2 = QWidget()
tab3 = QWidget()
tabs.addTab(tab1, "Tab1")
tabs.addTab(tab2, "Tab2")
layout1 = QGridLayout()
layout2 = QGridLayout()
# ...
tab1.setLayout(layout1)
tab2.setLayout(layout2)
window.setLayout(layout)
window.show()
self.app.exec_()
我可以用“FBS run”很好地运行我的程序;但是,当实际使用“FBS freeze/FBS 安装程序”打包应用程序时,它无法正常打开。它确实适用于默认代码,这让我相信将它从 QMainWindow 更改为 QWidget 会导致它无法工作