@
目录前言
本文主要记录下,在工作中碰到的一些Python语言关键字以及函数等用法或者说明。
总结
如何搭建虚拟环境
main.py文件一定要根目录下面
调用不同文件夹的函数时,main.py文件一定要根目录下面,并且还要创建一个__init__.py。
python中类的变量和实例变量的区别
"""this script parse the content of a xml file"""
class NewClass():
"""Summary of class here.
测试流程
"""
class_var = 1
def __init__(self):
"""
---
"""
self.init_var = 2
if __name__ == "__main__":
#实例1
NEWCLASS1 = NewClass()
#实例2
NEWCLASS2 = NewClass()
#实例1 的操作
NEWCLASS1.class_var = 20 #只有实例1访问生效
#用类名 的操作
NewClass.class_var = 20 #所有的访问的生效
print(NewClass.class_var)
print(NEWCLASS1.class_var)
print(NEWCLASS2.class_var)
#实例1 的操作
NEWCLASS1.init_var = 20 #只有实例1访问生效
#用类名 的操作
#NewClass.init_var = 20 #访问不到__init___ 相当于创建了一个类变量
#print(NewClass.init_var) #这个无法通过类名访问到__init___
print(NEWCLASS1.init_var)
print(NEWCLASS2.init_var)
pyqt5的按钮点击事件
不能够在子函数里面进行初始化,只能够在__init__函数里面初始化。不然会出现,按一次多次弹窗的问题。
删除线程函数
def __thread_stop(self, thread):
"""
强制关闭线程
"""
try:
tid = thread.ident
exctype = SystemExit
tid = ctypes.c_long(tid)
if not inspect.isclass(exctype):
exctype = type(exctype)
res = ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, ctypes.py_object(exctype))
if res == 0:
raise ValueError("invalid thread id")
elif res != 1:
ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, None)
raise SystemError("PyThreadState_SetAsyncExc failed")
except Exception as e:
print("thread_stop", e)
问题
使用pyinstaller编译成exe 如果提示 找不到platform
添加环境变量
QT_QPA_PLATFORM_PLUGIN_PATH
C:\Python37\Lib\site-packages\PyQt5\plugins
或者下载platform资源包
python虚拟环境搭建
中文字符串编码问题
使用urllib3的时候,用pyinstaller 打包exe, 无法运行
解决方法:
暂时先把这个屏蔽掉输入
pyinstaller -F -w -i wecon.ico --hidden-import=queue
具体原理暂时还不太清楚,先记录再此,后续有机会再好好研究pyinstaller的执行过程