开发环境:PyQt 5.5.1 Python 3.4.4 Qt 5.6.3 PyInstaller 3.2.1
- 加载ui文件
在Qt Creator中编辑好所需的ui文件后,在其目录下新建一个py文件,代码如下:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.uic import loadUi
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
loadUi('pyflashloader_isp.ui', self)
self.setFixedSize(self.sizeHint())
app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec())
效果如下:
2. Pyinstaller生成exe文件
若使用Bundling to One File的方式将上述代码生成为单一的exe文件,则需连同ui文件一同打包。方法是在使用Pyinstaller打包时使用“–add-data”选项,命令行截图如下:
此外,参考Run-time Information还需对py文件略作修改,代码如下:
import os, sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.uic import loadUi
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
if getattr(sys, 'frozen', False):
# we are running in a bundle
bundle_dir = sys._MEIPASS
else:
# we are running in a normal Python environment
bundle_dir = os.path.dirname(os.path.abspath(__file__))
loadUi(bundle_dir + '\pyflashloader_isp.ui', self)
self.setFixedSize(self.sizeHint())
app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec())