
Python
文章平均质量分 91
大福是小强
不再更,请访问:https://www.windtunnel.cn/
展开
-
pyinstaller冻结打包多进程程序的bug:无限创建进程直至系统崩溃
这两篇文章都没有提到下面的这个重要问题:采用Pyinstaller冻结打包多进程程序时,必须非常小心。这个技术线在Windows上会有一个非常严重的Bug。直接运行打包后的程序会造成无限创建进程,直到系统崩溃。原创 2025-01-04 17:14:45 · 1248 阅读 · 0 评论 -
用Python实现奇怪的疯狂按键需求
用Python实现了一个奇怪的需求,这个需求是一个奇怪的需求,不是我有这个需求,也不是我认识有这个需求的人。用了tkinter来实现了一个小窗口,这个小窗口可以显示状态,可以通过鼠标操作来控制状态。用了pywinauto来实现了找到一个窗口,然后把这个窗口放到最前面。用了来实现了疯狂按键,这个按键是根据Capslock和Numlock的状态来决定的。用了来实现了在后台运行这个程序,这样就可以在后台运行这个程序,不影响其他的操作。用了win32api。原创 2024-06-08 10:01:41 · 1336 阅读 · 0 评论 -
《PyQt5桌面应用开发》结束语
界面设计(UI)或者更加新潮的概念体验设计(UX),实际上对于人类来说是一个很古老的概念。人类开始使用工具就开始不由自主地塑造工具的个人体验,改进工具的有用性、易用性。在这个过程中有一对很有张力的概念始终扮演着核心的元素。个性化标准化标准化是一个很奢侈的概念,个性化是一个更奢侈的概念。或者反过来说,同样成立。对于软件来说,标准化的实施是最为简单的,每一份拷贝都可以是一样的,带来同等的体验;原创 2023-06-25 22:50:48 · 2358 阅读 · 2 评论 -
PyQt5桌面应用开发(21):界面设计结果自动测试(二)
上一篇简单说了下什么是测试驱动开发(TDD)。这在软件开发行业是比较常规的做法,因为只要不是完美主义强迫症的TDD,对于软件开发的质量管理是很有帮助的,因为TDD把软件开发的质量管理(计划-执行-检查-改进)的循环变得更加可用。但是加上UI后,这个问题就变得微妙起来了。UI是一种与人相关的内容,最好的做法当然是用人作为测试,常规开发过程中,也的确是依靠人力来进行测试。那么采用TDD来开发UI,是否能行呢?答案是肯定的。软件行业,如果说有什么事情是不可行的,那么就只有说别的事情是不可行这个事情是不可行的。万物原创 2023-06-17 09:31:26 · 455 阅读 · 0 评论 -
PyQt5桌面应用开发(20):界面设计结果自动测试(一)
QTest的职责是模拟UI中的事件,例如鼠标点击、键盘输入等。QSignalSpy可用于监听信号的发射,然后获取信号的参数。unittest测试框架组织自动化测试。HTMLTestRunner将测试结果输出到HTML文件中。下一章将完整编写一个PyQt5程序的测试驱动的开发。原创 2023-06-11 11:18:14 · 1423 阅读 · 0 评论 -
PyQt5桌面应用开发(19):事件过滤器
事件过滤器是一种可以在运行时改变的事件处理机制;只需要实现接口eventFilter函数,就能作为过滤器安装和卸载;Gradient渐变画刷还是不要用了……会被打。原创 2023-06-03 09:28:45 · 1015 阅读 · 0 评论 -
PyQt5桌面应用开发(18):自定义控件界面设计与实现
本文介绍了重载paintEvent方法,绘制自定义控件的方法。本文再次复习了属性动画的实现方法。自定义控件中需要注意的是,信号与槽函数是比较重要的外部接口。原创 2023-05-24 23:35:28 · 1202 阅读 · 0 评论 -
用pip安装cartopy(windows平台),解决GEOS库的问题
windows下也可以从源程序编译libgeos;虽然没有linux下面方便,但是也基本能用;cartopy真是好用啊……原创 2023-05-22 22:01:44 · 2114 阅读 · 3 评论 -
PyQt5桌面应用开发(17):中文书评+类结构+QWebEngineView
qt.io是最好的学习资源;Python的良好反射特性(魔术方法)是探索实际代码和机制的很好工具;学一个东西拿来用好过学一百个东西。原创 2023-05-22 14:11:59 · 872 阅读 · 0 评论 -
PyQt5桌面应用开发(16):定制化控件-QPainter绘图
信号与槽的使用事件处理,特别是鼠标事件,按下、释放、移动等画图的基本原理,包括画笔、画刷、画布等画图中,我们用了一个移动的技术,把画布移动到一个位置,以那个位置为0点画图,可以转动,然后移动回去。这里就是随便写了一堆颜色,然后用一个按钮的子类来实现,这样就可以直接用按钮的clicked信号来实现颜色的选择了。## 主程序:```python信号与槽的使用事件处理,特别是鼠标事件,按下、释放、移动等画图的基本原理,包括画笔、画刷、画布等。原创 2023-05-20 17:28:05 · 1296 阅读 · 0 评论 -
PyQt5桌面应用开发(15):界面动画
如果设计的软件用户,其注意力非常需要被吸引,而且他们的注意力是非常有限的,所以动画是非常有必要的。如果是开发者,那么动画就是浪费时间,因为他们的注意力是非常集中的,而且他们的注意力是可以被控制的,所以动画是非常不必要的。QVariantAnimation大概是这样处理插值过程的,用一个QVariant来表达各种值,然后提供一个注册插值函数的接口,每种具体的类型,调用插值函数,就可以得到插值的结果。但是业界老大告诉我,能用动画就用动画,不能用动画的用图片,不能用图片的用条目文字,最后的选择才是公式。原创 2023-05-18 13:12:08 · 2756 阅读 · 0 评论 -
【看了标题就行】Anaconda3避雷,windows 7装2021.05
老电脑,离线的那种,今天想升级一下Anaconda,结果下了一个版本传过去都不行。后面一查,windows 7的锅。Python3.9就不再支持windows 7.可怜的被抛弃的人们。然后就开始找要装哪个。原创 2023-05-14 22:21:16 · 1026 阅读 · 0 评论 -
PyQt5桌面应用开发(14):数据库+ModelView+QCharts
QSqlTableModel可以很好的管理数据库表格;MVC模型通过功能分离,提供了更好的灵活性和重用;QChartView来显示QChart,具体的图标是根据Series来决定的。原创 2023-05-13 23:33:05 · 1149 阅读 · 0 评论 -
PyQt5桌面应用开发(13):QGraphicsView框架
AI时代,计算创作艺术已经不是什么新闻。在前AI时代,为了讨好女朋友,秃子们也还是经常努力一下,比如用TurboC编个程序,显示一些闪来闪去一亮一亮的文字,效果不怎么样!别问我为什么知道。当时作为大一生的C语言老师,我指导了很多份这样的手工作品,但是班里成双结对的都是哪些Helloworld!勉强能打印出来的帅小伙……而今秃不秃什么的已经毫无心理波动,初心还是没有改变。那就来一次艺术与PyQt5的碰撞。先看作品:这个充满后现代主义、透着一种小清新、又带有亿点点叛逆的作品就是这次的快200多行代码的成果。原创 2023-05-12 17:04:02 · 1522 阅读 · 0 评论 -
PyQt5桌面应用开发(12):QFile与线程安全
python的open和read函数不是线程安全的。PyQt5中应该使用QFile代替open和read函数。原创 2023-05-09 11:58:33 · 796 阅读 · 0 评论 -
PyQt5桌面应用开发(11):摸鱼也要讲基本法之桌面精灵
程序还包括了一个资源文件(附带一个png的图标,一个qss文件)和一个界面的ui文件。原创 2023-05-08 21:08:32 · 1389 阅读 · 0 评论 -
PyQt5桌面应用开发(10):界面布局基本支持
布局分为两种层次,高层次布局和界面布局;界面布局分为:概念布局、相对布局和绝对布局;Qt5的常用布局类有:QVBoxLayout、QHBoxLayout、QGridLayout、QFormLayout和QStackedLayout。原创 2023-05-07 22:39:28 · 1040 阅读 · 0 评论 -
PyQt5桌面应用开发(9):经典布局QMainWindow
经典的不一定是最好,但绝对是能成为一个好基础的;QMainWindow可以作为桌面应用开发的第一个版本,作为迭代的基础;QMainWindow实现了几个典型的用户界面区域,菜单、工具栏、停靠窗、状态栏。原创 2023-05-06 18:57:58 · 2154 阅读 · 2 评论 -
PyQt5桌面应用开发(8):从QInputDialog转进到函数参数传递
函数的参数实际上是采用赋值的方式传递的,通过赋值,在函数的。在执行这个函数时,第一个参数就是被包装的函数,根据调用它输入的参数,它将被调用函数的部分或全部参数固定下来,构成一个新的函数,这个新函数的参数就是哪些没固定的参数。在函数的内部,访问一个函数参数的值,这没有什么特别的,函数传进来一个对象,函数参数是一个变量名,这个变量名在这个范围内(locals())指向这个对象。明白Python的函数变量名和对象的绑定关系,以及函数的参数传引用+赋值的调用方式,我们要做的就很简单,就在调用。原创 2023-05-05 17:30:06 · 1030 阅读 · 0 评论 -
PyQt5桌面应用开发(7):文本编辑+语法高亮与行号
控件的文档是由段落组成的,段落是格式化的字符串,它会自动换行以适应控件的宽度。段落由硬换行符分隔。文件打开和显示、文件编辑这是跟文本相关的用户界面的两个核心的功能,在严肃的桌面应用开发中,这是必不可少的。的代码,这个类与一个Editor联系在一起,当Editor的块计数变化、更新的时候,就调用这里的两个方法来计算宽度、行数,更新外观。不支持具有表格和浮动的复杂富文本呈现,但它支持您可能需要的日志查看器中的有限基于段落的格式。方法,来设置相应的字体、背景,显示行数,可以看到,这里的行数从1开始计数。原创 2023-05-04 14:29:17 · 2092 阅读 · 1 评论 -
PyQt5桌面应用开发(6):文件对话框
读入和写文件是一个GUI程序的常用操作。前者导入需要处理的数据,后者把数据输出到硬盘上后期使用。PyQt5提供了类来完成常用的文件打开、文件存储的功能。这个类有两个接口形式。第一种形式采用静态函数,调用的方式就是,比如。第二种形式需要先创建一个对象,然后调用对象的method()方法。原创 2023-05-02 17:00:26 · 1554 阅读 · 0 评论 -
PyQt5桌面应用开发(5):对话框
这样可以避免一系列的危险bug(例如,当对话框通过。等方法来显示对话框,这不是PyQt5推荐的方法,官方文档中专门针对这个进行了说明。PyQt5提供了一些内置的对话框,也可以自定义对话框。对话框在GUI中是一个常见的组件,用于和用户进行交互。,所以可以使用通用的布局组件来放置所有的控件,并有所有属性操作,例如。综合上面的例子,可以整一个综合的例子,包括。方法显示对话框,这种情况下,就应该连接。槽,这样就可以在点击按钮时关闭对话框。打开时,删除对话框的父窗口)。信号,以便在对话框关闭时得到通知。原创 2023-05-02 11:34:05 · 1928 阅读 · 0 评论 -
PyQt5桌面应用开发(3):并行设计
对一个桌面应用程序来说,有一个无法回避的主题就是并行设计。其主要的原因就是在计算机读取数据或者运行耗时计算时,用户界面必须避免“卡死”的状态。粗略分析,有两种情况。第一种情况是跟IO相关的操作。第二种情况是要消耗大量CPU计算的操作。IO密集型直接用线程(协程)来并行;CPU密集型用进程来并行;QObject对象没法在Python进程库中传递。原创 2023-03-13 10:47:27 · 1276 阅读 · 0 评论 -
PyQt5桌面应用开发(2):事件循环
坏的用户界面像根本不好笑的笑话,需要解释一下才能让人假笑。(匿名大佬)能看;能用。所以,GUI程序有两个关键部分。显示给用户交互的界面;响应用户输入的机制。能看先放在一边,作为一个攻城狮,最关心还是能用。计算机系统与人类的交互,从计算机系统的发明一开始就是一个非常重要的研究方向。从UI/UX(用户界面/用户体验)这么多年的探索,从纸带/磁带/显示器,到键盘、轨迹球、鼠标、AR、VR,交互方式越来越丰富。原创 2023-02-28 20:42:14 · 2560 阅读 · 1 评论 -
PyQt应用程序打包
打包是桌面程序开发无法回避的主题。客户不会安装,客户懒得安装。客户总是对的。Python开发的应用程序的打包其实已经相对成熟。PyInstaller是一个常用的解决方案。原创 2023-04-09 11:32:31 · 2254 阅读 · 0 评论 -
PyTorch浅尝辄止(1)
PyTorch神经网络的概念相对直观;数据集合与数据集合装载器的概念;模型的训练、保存、读入、预测等。原创 2023-04-15 09:05:09 · 99 阅读 · 0 评论 -
PyQt5桌面应用开发(4):界面设计
经过需求分析、事件循环和并行设计的介绍,终于还是要写一篇界面设计的内容。很不情愿,因为我这个部分很不擅长,设计的界面很丑很丑。其实丑并不可怕,关了灯都一样……首先,我们再回到需求分析的话题。8类控件可以分为3大类;三种使用ui文件的方式;每种方式都差不多,为了IDE支持代码,可以把控件的类型都声明一遍。原创 2023-03-23 19:49:30 · 8009 阅读 · 0 评论 -
PyQt5桌面应用开发(1):需求分析
除了无聊搞点这么没有前途的玩意之外,我也不能免俗。说什么Python乱七八糟、Python毁天灭地、学Python人类💊、PHP是最好的语言……“真香!原创 2023-02-26 08:04:31 · 2126 阅读 · 4 评论 -
PyTorch浅尝辄止(2)
张量是PyTorch中最基本的数据结构,可以看作是一个多维数组,可以通过方法来创建一个张量,也可以通过等方法来创建一个张量。张量可以通过计算得到一个新的张量,也有本地计算模式,也就是把运算的结果直接存储在原来的张量中,这样可以节省内存空间,但是需要注意的是,这种模式下,如果原来的张量被其他变量引用,那么这个变量的值也会发生改变,这是因为这两个变量指向的是同一个内存地址,所以会发生改变,这种情况下,我们可以使用clone()方法来复制一个张量,这样就不会影响到原来的张量了。原创 2023-04-15 11:15:37 · 116 阅读 · 0 评论 -
WSL2下的PyQt5报错XCB找不到
最近在WSL2上搬点砖,结果报xcb错误。有位兄弟写得比较清楚了。略微有几个细节,记一下,免得下次找。原创 2023-03-31 09:31:41 · 1330 阅读 · 0 评论 -
Python仿真时间戳的实现
在Python中实现时间戳的功能,与Java/Kotlin的结果类似,但是Python中的时间和日期功能分散在几个包中,而且有些包的功能重叠,这里做一个总结。原创 2023-04-24 18:28:54 · 172 阅读 · 0 评论