python
python知多少
独行侠_阿涛
2015年211院校毕业,于2020年考取软考高级证书-系统架构设计师,高分通过(61-64-52)。毕业前6年,一直专注于技术全面开花,有python/Node/Java/Elk系列等项目开发经验;熟悉搜索引擎解决海量数据搜索问题,Node代替Java开发服务后端,python自动化程序编写。目前持续沉淀过去的知识,陆续推出前端0+1专栏,容器技术等专栏,目前正在更新ELK7.2。
展开
-
python人脸识别-module 'cv2.cv2' has no attribute 'face'
今天初探了一下基于python的人脸识别。实现的方式没有想象中的那么难,当然这还是站在了众多巨人的肩膀上,才有的机会。不过问题也是多多,如题:这个错误的原因是因为没有安装包opencv-contrib-python导致的。所以安装一下就解决了。其次。有些网友说他们报错的前提是他们已经都装了需要的两个包,包括:opencv-contrib-python和opencv-python。这边给...原创 2020-03-04 10:42:56 · 5259 阅读 · 4 评论 -
PyQt5 打包没有icon图标,百度方法没用,终极解决之道究竟在哪(pyinstaller打包成exe文件,双击打开,没有显示图标)
在分享之前,先爆下粗口,wtfk。太难了,整整折腾了一下午。才搞定。pyqt5打包成exe,程序有图标,但是双击打开的任务栏和窗口都没有显示图标。百度的方法基本上用烂掉了。解决不了。最后在一个犄角旮旯的地方找到了解决方案:问题复现打包命令:pyinstaller -F -w -i favicon.ico update.py程序显示图标了,但是点进去,图标没了!直接在p...原创 2020-03-03 18:03:24 · 4897 阅读 · 12 评论 -
pyinstaller打包生成的exe运行报错:ImportError: unable to find Qt5Core.dll on PATH
pyinstaller打包pyqt生成的exe,直接运行exe文件时,程序闪退。发现报了个错:ImportError: unable to find Qt5Core.dll on PATH问题及解决办法程序闪退,第一反映肯定是有问题了,但是闪退没法跟踪问题,于是在命令行窗口执行exe,显示如下:D:\>"D:\python project\demo\dist\demo.ex...原创 2020-03-03 16:11:05 · 1189 阅读 · 0 评论 -
pyinstaller test.py打包生成的exe,老是会报某个包不存在(比如是pyinstaller No module named 'cv2')
如题,打包的时候看了下自己env里头是有这个包,但是打包之后的运行exe文件老是会提醒某个moudule不存在。看了其他网友的反应,似乎他们也有遇到相同的问题,大概原因是因为pyinstaller有时候没那么智能,部分包必须自己手动引入。解决方案:pyinstaller -F fly.py --hidden-import cv2其中--hidden-import 后面跟上要手动引入...原创 2020-03-03 16:05:40 · 2245 阅读 · 0 评论 -
pyinstaller打包exe运行exe报错看不到错误内容(pyinstaller打包的exe怎么查看运行错误)
调试是程序员的必修课。但是如果连调试的手段都get不到,那真的实在太惨了。比如,笔者在使用pyinstaller打包pyqt的程序成exe之后,运行exe,无故闪退,或者弹窗报错。作为一个工程师,这个时候有一千万个理由想要看到这个错误的内荣到底是啥。经过阅读文章无数,终于发现了怎么来看这个错误的方式了。通过cmd命令行cd到生成的exe文件所在的文件夹,然后以cmd的命令运行这个exe...原创 2020-03-03 15:03:44 · 5555 阅读 · 5 评论 -
pycharm下引用另外一个文件报错(如何引用另外一个文件)
一个大项目,进行按功能分文件开发是很正常的,但是我今天遇到一个问题,就是一个文件引用另外一个功能的文件的时候,会报错,如下:找了一圈,感觉都没人能给出一个正确的解释。后面发现,只要将当前文件所在的父级文件夹标注为source文件夹,这个问题就消失了。如下:...原创 2020-03-03 10:23:01 · 4010 阅读 · 2 评论 -
pyqt组件点击事件(其他事件也一样)传递参数
是这样,做项目的时候需要对多个组件共用一个方法,这个时候就有一个问题,如何去辨别每次触发这个方法的是哪个组件。常规的方式是通过self.sender()方法来获取触发源是谁。然后通过触发源的text属性内容的不同来区分。比如: def setColor(self, pressed): source = self.sender() if press...原创 2020-03-03 09:33:28 · 2653 阅读 · 0 评论 -
pyqt5在QMainWindow中布局的问题 (QVBoxLayout QHBoxLayout布局,组件显示不出来)
今天开做项目的过程,发现,基于QMainWindow作为父类进行页面开发的时候,同时使用QVBoxLayout QHBoxLayout来做布局,会出现组件显示不出来的情况。经过各种查找搜罗资料发现:在pyqt5中使用了父类为QMainWindow的话,在里面使用布局类,QGridLayout,QHBoxLayout ,QVBoxLayout 时,发现不好用。但是如果是在以QWidge...原创 2020-03-02 17:54:27 · 2939 阅读 · 1 评论 -
python中的argparse模块(参数解析) --和没有--有什么区别
引入在做项目的时候,发现一个问题:针对下面的这句一直理解不了:parser.add_argument("--x", help="横坐标", type=int)这边带个--和没有--到底有什么区别,各种查找,也没发现我想要的答案。后面再一个犄角旮旯的地方发现下面这个博文:示例代码import argparseparse = argparse.Argument...原创 2020-03-02 12:08:17 · 6435 阅读 · 7 评论 -
QPainter的使用
QPainter就是手里的作图工具,只需要三洋东西:笔(颜色,宽度,样式),字体(写字),刷子(大面积作画)设置笔和字体以后,就可以写字了:void MainWindow::paintEvent(QPaintEvent *event){ Q_UNUSED(event); QPainter painter(this); // 设置画笔颜色 painter...原创 2020-02-24 21:53:20 · 1681 阅读 · 0 评论 -
QComboBox使用的细节
之前讲过了clicked和clicked[bool]的区别其实是没有什么区别的。但是今天学习QComboBox的时候发现,activated和activated[str]的区别还是很大的。前者给槽函数传递的参数是下标index的值,从0开始。后者给槽函数传递的是item的text文字案例如下:from PyQt5.QtWidgets import *from PyQt5.Q...原创 2020-02-24 19:55:09 · 1150 阅读 · 0 评论 -
python str与repr以及toString()
python里头要转成字符串的方式,很多。比较常用的是str和repr。今天之前,笔者一直认为python没有类似于 java对象中的tostring()方法。但是发现原来toString()方法是部分的类的实例才有。比如:那么python里头我们能不能自己实现类似于 java对象中的tostring()方法呢?答案是肯定的。1、知识点学习str函数与print函数会调...原创 2020-02-24 16:48:39 · 13944 阅读 · 2 评论 -
QWidget的setFocusPolicy的注意事项
1.实际开发碰到的场景:对于Qt的控件,如QLineEdit,QSpinbox,QPushButton,QSlider等等,可以通过键盘的Tab按键获得焦点,可能在某些时候并不希望如此。2.错误记录:QWidget的setFocusPolicy方法为默认Qt::StrongFocus,即用户可以通过tab获得焦点,也可以通过鼠标点击获得焦点。于是,修改了其默认属性,setFocusP...原创 2020-02-24 15:45:40 · 793 阅读 · 0 评论 -
qt中clicked()和toggled()的区别
区别相同点:当点击按钮时,状态信号都会被发送。不同点:toggled要比clicked更容易触发。clicked()有的toggled有,而toggled有的,clicked()却不一定有!进一步解释:toggle在实物上有开关的意思,这跟我们物理实验用的开关是一回事,两头表示两个状态:合上和断开。于是更准确的译法应该是切换,在两个状态间进行转换。在Qt中,checkabl...原创 2020-02-24 15:30:48 · 7202 阅读 · 1 评论 -
PyQt5 clicked和clicked[bool]信号区别
网友的解释(跟实践有冲突)在使用命令按钮QPushButton时,最常用的信号列表如下:关于“将当前状态传递给外界”这句作用难以理解,其实就是:控件中的clicked()信号和clicked(bool)信号是两个不同的信号1、clicked()映射槽函数时,clicked()信号映射到的槽函数是不带参的,比如槽函数可以写作def ClickedAction(self),...原创 2020-02-24 15:28:35 · 12411 阅读 · 1 评论 -
python的with关键字
前言with表达式其实是try-finally的简写形式。但是又不是全相同。格式"""格式with context [as var]: pass"""其中的context是一个表达式,返回的是一个对象,var用来保存context表达式返回的对象,可以有单个或者多个返回值。with open('1.txt') as f: print(f.read())...原创 2020-02-24 14:21:53 · 411 阅读 · 0 评论 -
pyqt5 主窗口闪现闪退
今天遇到一个很有趣的现象。就是之前运行pyqt5的主窗口的时候都是通过如下方式来呈现的:if __name__=='__main__': app = QApplication(sys.argv) ex =Example() sys.exit(app.exec())上面这种可以运行并显示一个正常的主窗口然后呢,早上突发奇想,觉得代码可以精简,于是改成如下方式:...原创 2020-02-24 10:04:30 · 9136 阅读 · 1 评论 -
QMainWindow和QWidget的区别
QMainWindow中在setUi时自动为用户创建了一个菜单栏、工具栏、中心窗口和状态栏。而QWidget是没有这几点的。QWidget运行后就只有一个“页面”,而QMainWindow运行后生成了一个“窗口”。从外到内依次是菜单栏、状态栏、工具栏、停靠窗口、中心窗口。查看帮助文档可以发现,setMenuBar、addToolBar、setCentralWidget、setStat...原创 2020-02-24 09:21:37 · 7480 阅读 · 0 评论 -
pyqt5 创建一个组件,self参数什么时候用
学过python的同学,肯定都知道,python里头的类的方法,第一个参数都是self表示当前类的某个实例,然后pyqt5在创建一个组件的时候,似乎所有的构造器都会有一个parent的参数。所以这个时候问题就来了:parent到底要不要给他赋值,赋值什么呢。答案是:当创建的这个组件是属于这个self的直接子组件,就要给他赋值,赋值内容就是self。否则就不赋值放空。下面举个例子:...原创 2020-02-23 20:40:00 · 3528 阅读 · 0 评论 -
pyqt5实现窗口居中显示
pyqt的窗口居中显示的方式主要有下面两种方式,直接上源码。import sysfrom PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidgetclass Example(QWidget): def __init__(self): super(Example, self).__init__()...原创 2020-02-23 12:15:00 · 4698 阅读 · 1 评论 -
qmessagebox按钮变成中文,设置默认按钮
废话不多说,直接上源码,里头列举了实现如题功能的两种方式:import sysfrom PyQt5.QtWidgets import QApplication, QWidget, QMessageBoxfrom PyQt5 import QtGuiclass Example(QWidget): def __init__(self): super(Example...原创 2020-02-23 12:08:02 · 1889 阅读 · 1 评论 -
python部分语法不会提醒
学习python图形界面编程,最难受的就是智能提醒有时候会“”丢失“”今天再学习到pyqt的时候,发现原来智能提示丢失是因为我们对参数没有做明确的类型指定。以下面为案例为例子。做一个关闭窗口前的提示功能。会提示的写法如下: def closeEvent(self, event:QtGui.QCloseEvent): reply = QMessageBox.q...原创 2020-02-23 11:44:08 · 317 阅读 · 0 评论 -
instance.quit self.close区别
学习pyqt都会遇到一个问题,如何通过按钮关闭事件。官方提供了两种方式:方式1:qbtn.clicked.connect(QtCore.QCoreApplication.instance().quit)方式2:qbtn.clicked.connect(self.close)但是这两种到底有什么区别呢。翻看了一圈,都没有找到一个明确的解释。还是外文资料比较全。下面就是我根...原创 2020-02-23 11:23:34 · 1142 阅读 · 0 评论 -
使用gitbook快速把md文件转成html
学习pyqt的最大的障碍就是没有中文文档。在笔者不懈努力下发现宝藏了。pyqt5的中文手册下载这个链接指向的是一个github地址。笔者将他下载下来之后呢,发现都是md文件。很讨厌每次都是用md软件打开帮助文档,所以,就想着怎么将md转换成成常用的帮助文档类型,比如html。于是有了此篇博文。使用gitbook快速把md文件转成html安装npm i gitbook gitb...原创 2020-02-22 12:35:12 · 1576 阅读 · 0 评论 -
sys.exit(app.exec_())
qtpy做图形应用,肯定见过如标题这句代码。这是啥意思呢:查找一些资料。大概有如下的解释:当Unix风格的应用程序退出时,它们会向其父进程返回一个称为“状态代码”或“退出状态”的数字。0用于表示成功; 任何非零都是失败的。(有一些尝试标准化错误代码的含义,但它通常仍然留给每个程序。)app.exec_()运行主循环,并在退出时返回状态代码。sys.exit(n)退出您的应用程序...原创 2020-02-22 11:14:28 · 13870 阅读 · 2 评论 -
super(Net, self).__init__()
最近在用pyqt编写桌面应用。发现一个比较拗口的语法点:class mywindow(QtWidgets.QMainWindow, Ui_MainWindow): def __init__(self): super(mywindow, self).__init__() self.setupUi(self) # 定义槽函数 def he...原创 2020-02-22 11:07:09 · 23326 阅读 · 7 评论 -
python同时继承多个类且方法相同
只有一句话,那就是python创建类的时候,类名后面的括号里头跟的是父类,可以跟多个,如果调用的父类的方法不一样,那就是调用特定的某个父类的方法,如果调用的父类方法在两个父类里头都有,遵循先来后到原则。class A(object): def getName(self): print("name is A")class B(object): def get...原创 2020-02-22 10:57:13 · 7495 阅读 · 1 评论 -
Python中if __name__ == '__main__',__init__和self 的解析
1 if __name__ == '__main__'1.1 摘要通俗的理解__name__ == '__main__':假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明');在你自己眼中,你是你自己(__name__ == '__main__')。if __name__ == '__main__'的意思是:当.py文件被直接运行时,if __name__ =...原创 2020-02-22 10:49:40 · 375 阅读 · 0 评论 -
python学习笔记1
第一个例子,都是hello world。python也是一样 打开编辑器。 如下操作: 错误信息:SyntaxError: Missing parentheses in call to ‘print’。 这个错误是python的语法随着版本的变化,语法也升级了,python3.0的打印是:print(“hello world”);===========================原创 2017-04-10 15:41:57 · 373 阅读 · 0 评论 -
python学习笔记2
#!/usr/bin/env python3#coding=utf-8 #Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。"判断条件"成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。#条件语句 括号()优先等级最高'''if(1): print(1) if(2): print(2)原创 2017-04-11 17:15:37 · 351 阅读 · 0 评论 -
python学习笔记3
学习声明:笔者的python环境是3.x#!/usr/bin/env python3#coding=utf-8 #时间'''import timeprint(time.time())#获取当前时间print(time.localtime())#获取格式化的时间print(time.asctime())#接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 20原创 2017-04-12 14:28:05 · 446 阅读 · 0 评论 -
python学习笔记4
注意:笔者的python环境是3.x#!/usr/bin/env python3#coding=utf-8 #函数 def 定义函数#在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象#不可更改的对象,自身其实就是一个指针,指向一个对象,对其修改其实就是新建一个对象。可以修改对象,对其修改,修改的是内部的原创 2017-04-12 15:35:10 · 257 阅读 · 0 评论 -
python3.x和2.x区别
学习过程中,笔者发现,2.x和3.x之间的差别还是挺明显的。 所以,笔者还是单独把区别这块拣出来。后续在学习过程中有发现新的区别的地方会继续更新到这篇博文里的。 **20170411**print(1 in (dictmp))#代替python2.x的has_key,判断dictmp是否含有这个key###############################################原创 2017-04-11 21:20:37 · 292 阅读 · 0 评论 -
python学习笔记5
注意:笔者的python环境是python3.x#!/usr/bin/env python3#coding=utf-8 #模块:在调用模块中的函数时,必须这样引用:模块名.函数名'''import selfinfoselfinfo.info();#模'''#模块导入方式 '''from selfinfo import info #只导入info函数部分内容,这个时候i原创 2017-04-12 16:40:33 · 456 阅读 · 0 评论 -
python学习笔记3
这边声明下,因为python3.x和2.x还是有明显的差异的。然后笔者用的是3.x的版本,所以,如果看官有用到我的笔记,请注意,是在python3.x环境下。怎么判断环境是3.x还是2.x 笔者装了2.x也装了3.x,但是笔者在环境变量里面配置的是3.x所以笔者的电脑的python环境是3.x.#!/usr/bin/env python3#coding=utf-8 #列表'''list1原创 2017-04-11 21:16:42 · 238 阅读 · 0 评论 -
pycharm激活
语言的学习都会有一个进阶的过程,这个过程的工具的选定很重要,作者选择了pycharm.官网下载地址:https://www.jetbrains.com/pycharm/download/#section=windowsjetbrains的软件都需要激活,下面给大家提供激活的方式:安装的时候;选择 Activate new license with License ser原创 2018-01-28 20:13:16 · 1443 阅读 · 2 评论 -
python进阶
原创 2018-01-28 21:50:48 · 204 阅读 · 0 评论 -
pycharm 错误持续更新
--20180128colon expected:缺少分号indent expected:没有缩进,或者方法内容没有写原创 2018-01-28 21:54:47 · 1580 阅读 · 0 评论 -
python搭建
一起来了吧,python的搭建教程 1、下载python:https://www.python.org/downloads/ 如下图: 2、安装python,勾上add to path 然后选择next就好了。 打开cmd窗口,输入python,查看回应是否如下,是的话,安装成功了。 至此python搭建完毕。原创 2017-04-10 15:08:38 · 307 阅读 · 0 评论