欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > PythonQT5打包exe线程使用

PythonQT5打包exe线程使用

2025/5/16 21:32:37 来源:https://blog.csdn.net/huweijun_2012/article/details/145077367  浏览:    关键词:PythonQT5打包exe线程使用

打包:

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._MEIPASSexcept 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 = 16font = 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 = 0else: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 = p1def 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])# 比如渲染 界面等等。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词