pyqt5多个库,资源文件,多个ui,打包为一个exe代码示例
时间: 2024-04-29 17:23:30 浏览: 188
pyqtdeploy 发布你的 pyqt5 应用程序(win32)
以下是一个示例代码,展示如何使用pyqt5将多个库、资源文件和多个ui打包成一个exe文件:
``` python
import sys
import os
import platform
import subprocess
import shutil
from PyQt5.QtCore import QCoreApplication, Qt
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtGui import QIcon, QFontDatabase
import gui_mainwindow
import gui_dialog1
import gui_dialog2
# Add resource file to the program
qInitResources()
# Setup fonts
QFontDatabase.addApplicationFont(":/fonts/Roboto-Regular.ttf")
QFontDatabase.addApplicationFont(":/fonts/Roboto-Bold.ttf")
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.ui = gui_mainwindow.Ui_MainWindow()
self.ui.setupUi(self)
self.ui.pushButtonOpenDialog1.clicked.connect(self.open_dialog1)
self.ui.pushButtonOpenDialog2.clicked.connect(self.open_dialog2)
def open_dialog1(self):
dialog1 = Dialog1()
dialog1.exec_()
def open_dialog2(self):
dialog2 = Dialog2()
dialog2.exec_()
class Dialog1(QDialog):
def __init__(self):
super().__init__()
self.ui = gui_dialog1.Ui_Dialog1()
self.ui.setupUi(self)
class Dialog2(QDialog):
def __init__(self):
super().__init__()
self.ui = gui_dialog2.Ui_Dialog2()
self.ui.setupUi(self)
if __name__ == '__main__':
app = QApplication(sys.argv)
# Set application icon
app.setWindowIcon(QIcon(":/icons/app_icon.png"))
# Set high DPI scaling
if platform.system() == 'Windows':
QApplication.setAttribute(Qt.AA_EnableHighDpiScaling, True)
# Set application style
app.setStyle('Fusion')
# Setup main window
main_window = MainWindow()
main_window.show()
# Execute program
sys.exit(app.exec_())
```
在此示例中,我们使用了三个ui文件,分别为gui_mainwindow.ui、gui_dialog1.ui和gui_dialog2.ui。这些文件可以使用Qt Designer创建,然后转换为python代码,以便在程序中使用。
我们还添加了一个资源文件,其中包含了程序所需的图标和字体文件。该资源文件可以使用qrc文件格式创建,然后使用pyrcc5工具将其转换为python代码,以便在程序中使用。
最后,我们使用PyInstaller将所有文件打包成一个exe文件。以下是打包命令:
``` bash
pyinstaller --name=my_program --onefile --windowed main.py
```
其中,--name参数指定程序名称,--onefile参数将所有文件打包到一个文件中,--windowed参数将程序运行在窗口模式下,而不是控制台模式下。
阅读全文