PythonQT5打包exe线程使用
作者:胡子哥502
本文介绍了使用Python和QT5打包EXE文件,并在其中使用线程,打包时需要修改spec文件以加载资源文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
打包:
pyinstaller --noconsole --onefile test.py
–noconsole 表示不需要打开命令行
修改:test.spec
一般项目里面需要用的资源文件,比如lib、png、exe等。
需要单独修改spec文件
pathex=['.'], binaries=[ ('D:/test.png', '.'), ('D:/simsun.ttc', '.'), ('D:/teds.exe', '.') ],
再执行下面的命令即可打包加载资源文件到exe中。
pyinstaller test.spec
在py代码里面直接使用相对路径即可。
py里面获取图片路径方法:
def resource_path(relative_path): """ 获取资源的绝对路径 """ try: # PyInstaller 创建的临时文件夹,或者当以 --onefile 模式打包时的路径 base_path = sys._MEIPASS except Exception: # 如果不是打包后的环境,则使用当前工作目录 base_path = os.path.abspath(".") rp = os.path.join(base_path, relative_path) return rp
使用:
font_path = resource_path("simsun.ttc") print('font_path: ', font_path) font_size = 16 font = ImageFont.truetype(font_path, font_size)
隐藏和现实QT元素:
def on_hide_show_click(self, params): if self._is_show == 1: self.frame_2.hide() self.frame_3.hide() # 去除限制最小高度和宽度 self.setMinimumSize(0, 0) self.resize(self.width(), 50) self._is_show = 0 else: self.frame_2.show() self.frame_3.show() self.resize(self.width(), self.height()) # self.adjustSize() self._is_show = 1
按钮点击方法带入参数:
self.pushButton.clicked.connect(lambda: self.on_hide_show_click(1))
线程使用:
# 定义线程class class ThreadDemoHandle(QThread): # 定义信号,用于从线程中发送数据到主线程 data_received = pyqtSignal(list) # p1 为参数,可以多个哦。 def __init__(self, p1): super().__init__() self.p1 = p1 def run(self): try: # 处理逻辑,比如发送请求等等。计算复杂逻辑。。。 # 发送信号到主线程 self.data_received.emit([self.p1, '结果']) except Exception as e: # flush=True 会强制把日志刷到文件里面,不加的话,有时候不会写入文件 print('线程处理错误:', e, flush=True) # 使用 self.worker = ThreadDemoHandle(1200) # handle_result_data 方法是处理线程返回的结果 self.worker.data_received.connect(self.handle_result_data) self.worker.start() @pyqtSlot(list) def handle_result_data(self, result): print('结果:', result[0], result[1]) # 比如渲染 界面等等。
到此这篇关于PythonQT5打包exe线程使用的文章就介绍到这了,更多相关PythonQT5打包exe线程内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!