当前位置: 代码网 > it编程>前端脚本>Python > PythonQT5打包exe线程使用

PythonQT5打包exe线程使用

2025年01月15日 Python 我要评论
打包:pyinstaller --noconsole --onefile test.py–noconsole 表示不需要打开命令行修改:test.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线程内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网! 

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com