如何在Mac M1上快速安装PyQt5
由于官方并没有在 M1 上编译 PyQt 导致安装存在一些问题。
M1 上的 Python 不能直接使用 x64 的 PyQt5。但是 M1 上可以运行 x64 的 Python。所以通过安装 x64 的 Python 然后再安装 PyQt5 即可。
1. 安装 Python
python-3.9.13-macosx10.9.pkg
2. 勾选自定义同时只勾选安装 pip
3. 设置 pip 源
/Library/Frameworks/Python.framework/Versions/3.9/bin/pip3 install pqi
/Library/Frameworks/Python.framework/Versions/3.9/bin/pqi use tuna
4. 安装 PyQt5
/Library/Frameworks/Python.framework/Versions/3.9/bin/pip3 install PyQt5
5. 测试
/Library/Frameworks/Python.framework/Versions/3.9/bin/python3
📢📢� ...
PyQt学习心得
在学习 PyQt 的过程中由于资料的缺乏或者没有中文导致大多数人感叹资料太少,学习困难,又或者急于求进,赶鸭子上架的情况,此时有系统的学习方法很重要。每个人都需要有自己的学习方法,别人的学习方法并不一定适合自己但可以采纳一些。笔者在这里列举了一些当初自己自学的一些心得和方法,希望帮助大家建立一套自己的学习 PyQt 的方法,提高自身的学习能力。
# Python 基础
在学习和使用 PyQt 之前需要熟练使用 Python,经过对 QQ 群里经常提问的问题的分析,发现大部分人对 Python 中的基础知识掌握不牢固导致很多基础问题,如果要想更好的使用 Python 以及它的扩展必需要进行系统的学习。这里列举一下常用的知识点。
类 参考资料
类的继承
类的多继承
类方法重写 参考资料
类中的 super 函数 参考资料
函数调用 / 参数类型
对象调用 (参考第 1 点)
必须熟练掌握上面的知识点后入门 PyQt 才比较容易,如果初学者对上面的知识点还不是很了解,本文不适合继续往下阅读。
# 设计师
Qt 设计师除了方便快速设计一些简单的界面外,其实笔者觉 ...
PyQt属性动画(QPropertyAnimation)
QPropertyAnimation 继承自 QVariantAnimation ,其作为 Qt 的属性动画用于针对控件的属性或者继承自 QObject 的对象中定义的属性做修改,
简单来说就是基类是 QObject 且定义了属性变量,就可以用 QPropertyAnimation 来做属性动画。同时也可以通过 pyqtProperty 来增加自定义属性。
首先,通过构造函数 QPropertyAnimation(QObject, Union[QByteArray, bytes, bytearray], parent: QObject = None) 创建一个对象,其中
第一个参数是动画作用的对象,也可以通过 setTargetObject 设置
第二个参数是属性名,在 py3 中类型是 bytes,也可以通过 setPropertyName 设置
# 函数
一些常见的设置函数
setPropertyName
设置属性名
setTargetObject
设置动画作用对象
setDuration
设置动画持续时间(毫秒)
setStar ...
如何查阅Qt文档
很多网友在问有没有 PyQt5 的文档之类的问题,在 PyQt4 的时候 PyQt 官网有了英文版的文档,随后有网友翻译成了中文。不过现在 PyQt5 官方的文档都指向了 C 的 Qt 文档,其实 C 的 Qt API 文档结构很清晰,翻阅很容易的,需要注意几点。
作为一个开发人员确实需要具备查阅文档、查询资料等基础技能,会为自己的开发带来很大的帮助,要善于搜索,通过不同的方式去搜索才能找到自己需要的东西。
拿 Qt C++ 文档来说,官网地址是:https://doc.qt.io/qt-5/qtwidgets-module.html 这里面记录了所有控件的详细函数文档。
比如拿 输入框 QLineEdit 来说,怎么去查询它的用法和信号槽等资料?
https://doc.qt.io/qt-5/qlineedit.html
# 左侧目录
在文档左侧目录中有如下几个:
Properties - 控件里的属性(比如宽高等,通常需要当作函数调用)
Public Slots - 这个是控件自己的槽函数(当作普通函数就行)
Signals - 这个是输入框的包含的信号
Public Fun ...
解决GitHub下载速度缓慢的问题
由于 Github 的下载走的是 AWS - 亚马逊的路线,,so slow,跟乌龟一样慢。。照着一些方法改了 hosts 文件,偶尔能提提速度。
# Windows
Hosts 文件的路径是:
C:\Windows\System32\drivers\etc
# Mac
终端内输入:
sudo vim /etc/hosts
# 追加域名的 IP 地址
利用 https://www.ipaddress.com/ 来获得以下两个 GitHub 域名的 IP 地址:
(1) github.com
(2) github.global.ssl.fastly.net
打开网页后,利用输入框内分别查询两个域名
将以上两段 IP 写入 Hosts 文件中:
192.30.253.112 github.com
151.101.185.194 github.global.ssl.fastly.net
保存。
刷新 DNS 缓存
在终端或 CMD 中,执行以下命令:
ipconfig /flushdns
FFmpeg合成加密HLS记录
记录在某个需求中要求截图并合成加密视频文件,这里采用 FFmpeg 的管道流来实现生成 HLS 加密文件。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Created on 2019年3月4日
@author: Irony
@site: https://pyqt5.com https://github.com/892768447
@email: 892768447@qq.com
@file:
@description:
"""
from pathlib import Path
from subprocess import Popen, PIPE
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = 'Copyright (c) 2019 Irony'
__Version__ = 1.0
# p = Popen([r'D:\soft\ffmpeg\bin\ffmpeg.exe', '-y',
# ...
python 在类里使用进程池
首先, 进程池的作用就是减少进程的创建和释放 开销的, 所以在类中作为局部变量是不合适的;
其次, 进程池必须在 if __name__ == "__main__" 里 ,否则会报 frozen_ 什么什么的错误;(这一点可能解释有误);
然后, 线程池的 apply_async 中如果传入 self.xxx 方法,会报 multiprocessing.Pool pickling error 什么的错误, 具体解释见 https://blog.csdn.net/dutsoft/article/details/70336462, 里面有解决方法,但是我没有成功(最开始测试没有现在理解的透彻, 不过应该是可以的); 由于第 1 点 不合理, 所以有什么办法在类 函数中获取 进程池对象 po 的地址:
我的解决思路和方法是:
通过 globals () 取得全局变量 , 测试证明 :不同文件的 globals() 是不同的: 如 Tab2.py 的 globals() 和 main_extra_func_file.py 中的 globa ...
多线程之守护线程和阻塞线程
如果你设置一个线程为守护线程,就表示你在说这个线程是不重要的,在进程退出的时候,不用等待这个线程退出。如果你的主线程在退出的时候,不用等待那些子线程完成,那就设置这些线程的 daemon 属性。
即在线程开始(thread.start ())之前,调用 setDeamon()函数,设定线程的 daemon 标志。
(thread.setDaemon (True))就表示这个线程 “不重要”。
如果你想等待子线程完成再退出,那就什么都不用做,或者显示地调用 thread.setDaemon (False),设置 daemon 的值为 false。新的子线程会继承父线程的 daemon 标志。
整个 Python 会在所有的非守护线程退出后才会结束,即进程中没有非守护线程存在的时候才结束。
setDaemon () 函数要放在 start 之前设置才行。
import threading
import time
def func():
print("子线程开启:", time.localtime())
time.sleep(2)
print("子线程结束:", ...
异常捕获之cgitb模块
cgitb 模块为 Python 脚本提供了一个特殊的异常管理器。名字有点误导人,它最初设计是为了以 HTML 格式展示 cgi 脚本的大量异常信息。后来,他扩展为也可以展示纯文本信息。该模块激活后,如果发生了未捕获的异常,将会展示格式化的输出报告。该报告包括源代码每一层的回溯,以及当前执行程序的参数和局部变量。以及,你可以选择将这些信息存到一个文件里,而不是发送到浏览器。
# 用途
当编辑器中无法显示错误信息时,尤其是 PyQt ,可以尝试在 cmd 中运行代码,或者使用此模块来得到错误信息。
# 介绍
# cgitb.enable
cgitb.enable(display=1, logdir=None, context=5, format="html")
参数说明
display 1,发送至浏览器;0, 不发送
logdir 如果有的话,写到该目录下
context 显示错误代码周围的代码行数
format 是否显示为 HTML,除了’html’之外的所有值,都会显示为纯文本
# cgitb.handle
cgitb.handle(info=None)
参数说明
如果你 ...