pyqt5 && python打包

最近需要给之前的命令行程序写一个界面,使用Qt-designer拖界面还是比较方便的,其中一个比较麻烦的问题就是实时输出日志的问题,直接使用os.popen会导致窗口进程直接卡死,需要使用qt提供的Qprocess来处理,然而最终还是有问题;才发现是python的缓存问题,直接运行可以使用-u解决,但是pyinstaller打包不支持unbuffered,最终使用了py2exe pyqt5 高分屏支持 os.environ["QT_AUTO_SCREEN_SCALE_FACTOR"] = "1" Qprocess子进程 为了防止大批量的任务导致窗口进程卡死,需要使用qt实现的qprocess来调用,使用os.popen 和 subprocess都是会出问题的 self.process = QtCore.QProcess() self.textEdit.clear() self.process.start(command) 系统命令实时日志获取 因为python缓冲区的问题,误以为是qt这部分的问题 # process 部分 self.process.readyRead.connect(self.dataReady) # 输出槽函数 def dataReady(self): cursor = self.textEdit.textCursor() cursor.movePosition(cursor.End) text = self.process.readAll() cursor.insertText(str(text)) self.textEdit.ensureCursorVisible() print(text) 打包 使用了好几个打包成exe的工具,发现基本都没办法很好的支持unbuffered,不关闭缓存就无法正常地实时获取运行的日志,pyinstaller, cxfreeze 直接打包还可以,但是不支持,还是py2exe好用 pyinstaller # 其他程序没有二进制依赖可以不加--paths pyinstaller --paths C:\Users\firer\.virtualenvs\compress_images-8VD5V_Md\Lib\site-packages\PyQt5\Qt\bin -F -w .\image_compress_ui.py cxfreeze 需要打包的文件夹创建setup.py(任意名字都可以) import sys from cx_Freeze import setup, Executable include_files = [] build_exe_options = {'packages': ['PIL'], 'excludes': [], 'include_files':include_files } base = None if sys....

2021-01-12 · 1 分钟 · Me