- 博客(57)
- 资源 (4)
- 收藏
- 关注
原创 PySide6和PyQt5的show()不仅仅是展示这么简单
可以看到,成功获取了window1.frame的背景颜色,但是并没有输出预设的#00007f,而是输出了一个QFrame的默认预置色#f0f0f0。这一句就已经把window1的所有部件进行初始化和赋值了,show()语句仅仅是显示出来,然而并不是,show()语句执行的操作远比想象中多。方法是:将获取背景色的语句放在show()语句之后。这是一段很典型的代码,在一个画面中放置一个QFrame,并将其背景色设置为#00007f。我用了十几个小时查资料和做实验才解决了问题。测试PyQt5,运行结果相同。
2024-04-14 00:34:12 163
原创 python的time模块中几个关于时间的方法
它的输入参数为两个,第一个参数是一个表示时间的字符串,第二个参数是一个表示时间格式的字符串。的返回值是一个跨平台的、标准化的时间格式,可以直接用于时间戳的计算和比较。代表日期(例如:14),在下面的表格中你会看到其他常用的特殊字符。是Python中的一个函数,用于将时间戳(以秒为单位)转换为本地时间的时间元组。返回的时间元组包含了年、月、日、小时、分钟、秒、星期、一年中的第几天以及是否为夏令时等信息。表示是否为夏令时(0表示不是,1表示是,-1表示不确定)。,表示要转换的时间戳,默认为当前时间。
2023-12-14 21:17:16 169
原创 pyqt5的组合式部件制作(四)
对组合式部件的制作又改进了一版,组合式部件的子部件不再需要单独“提升为”,如果在模板文件的提升部件窗口内选择了“全局包含”,那么只需要在模板文件和应用文件中直接复制粘贴即可,部件的应用更为简便。如下图:按住ctrl,直接拖拽即可。
2023-11-22 18:27:48 127
原创 pyqt5的组合式部件制作(二)
打开Qt设计师,将MySelectorBox加入“提升的窗口部件”,并将_selector_1“提升为”MySelectorBox“。可以看到,主程序中仍然必须有每一个部件的init()语句,所以,下一步的任务就是要把部件的init()语句自动或半自动隐式执行。如果需要多个相同的组合部件,只需要再Qt设计师里面简单的复制粘贴即可。例如,三个相同的选择器:将第一个选择器简单复制粘贴即可。打开Qt设计师,将MyLamp加入“提升的窗口部件”,并将几个指示器全部“提升为”MyLamp”。
2023-11-08 11:44:20 124
原创 我用PYQT5做的第一个实用的上位机项目(六)
在任何时候,上位机发给PLC的报文都是固定长度的,报文的首2和末2字节内容相同,作为事件定义和断帧校验。至于本次需要查询哪些部件的变量,这些变量的类型和字节长度都是提前规划好并在PLC端写好了对应的子程序,当PLC端收到报文并且报文头6字节与字符串“A0101S”比对成功,报文的第11、12字节与字符串“A0”比对成功,就执行相应的子程序把上位机需要的地址的内容复制到PLC的通信发送缓冲区打包并发送至上位机,上位机收到返回的数据后,按照提前规划的变量的类型和字节长度解码并刷新显示界面。
2023-10-10 22:56:14 468 1
原创 我用PYQT5做的第一个实用的上位机项目(五)
总结一下,目前有两个画面:主画面和数据设置画面,一个选择器,一个仪表盘,一个指示灯,几个功能按钮。其中表盘、 进度条和指针的外形尺寸以及几何位置相同,背景色都是透明色。通过旋转指针和进度条的角度来实现显示。遮罩的作用是把进度条的下半部分遮住。同样的,画面中的部件,每个部件对应一个同名的首字母大写的类,用来补充定义部件。如上图,每个画面对应一个同名的首字母大写的类,用来补充定义画面。仪表盘由以下部件构成:背景。制作一个动态仪表盘。
2023-10-09 10:46:31 153
原创 我用PYQT5做的第一个实用的上位机项目(三)
画面的类,目前创建了两个画面:form0( 主画面)和form_setting(设定值画面),每一个画面对应一个同名首字母大写的类,例如:form0对应的类是Form0,form_setting对应的类是Form_setting。然后在类里面,每一个需要有操作的部件,例如按钮、指示灯等,也都对应一个同名首字母大写的类,这样就可以把所有部件的操作按位置集中整合。因为自己不是专业的程序员,只是一个搞电气控制的“票友”,所以尽量减少手动输入 代码量,能在Qt Dsigner里面完成的组态就不要放在代码里面完成。
2023-10-03 12:35:19 397
原创 我用PYQT5做的第一个实用的上位机项目(二)
一、按钮的图片资源:用绘图软件(例如AI、coreldraw、PS等,看自己的熟悉程度)制作按钮的图标,我是用的大雄CAD,做出来线条之后导出PNG到PS去进一步编辑。说个题外话,大雄CAD是一个免费的CAD软件,有很多年历史了,我记得应该是西工大一个叫廖达雄的教授搞的,无基础零秒上手,对于搞电气的只需要简单画画机械图的特别适用。以“用户”图标为例,在大雄CAD中,画4个圆,直径为3和5,线粗为0.4,线色RGB(230,230,230)首先,制作一些自定义的常用部件,原生的部件很粗糙。
2023-09-28 18:08:06 291
原创 python不用附加库的简单的字符串加密
思路:密钥是一串数字字符串,首先取得原始字符串的每个字符的ASCII码,然后将每个字符ASCII码与密钥字符串的对应位置的数字加减(偶加奇减)得到新的ASCII码列表,转换为字符串输出。
2023-08-28 23:00:13 258
原创 用Qlabel制作的自定义带图片的按钮
11、新建python文件,用PyRcc转换并导入图片资源。PyRcc的安装和使用,前面的连接里面也有。3、 Photoshop创建几个PNG图片,大小与需要的按钮尺寸一致,背景色为透明色;9、label的“改变样式表”,“添加资源”,“image”,选择之前引入的图片资源。7、逐个添加之前创建的PNG图片,至此已将图片资源引入。以上步骤不清楚的,可参照。1、Qt Designer中新建UI,命名为:带图片按钮.UI;2、在UI的背景处点击右键,改变样式表,添加颜色,设定背景色;
2023-08-22 12:22:50 438
原创 PYQT的show()与hide()使用的困惑
代码看上去没问题,但是运行之后窗口没有显示,只执行了一次print('1'),然后就没有任何响应了。分析原因:main函数里面的show()还没有执行,就是说,form1还没有创建就被th1调用了,所以会出错。解决方法:将th_todo1里的 time.sleep(0.5)挪到第一行,给main函数时间去创建form1。最初的目的是设计一个周期显示和隐藏的窗体,每隔0.5秒钟显示或隐藏,达到“闪烁”的效果。困惑1:将语句form1.show()挪至th_todo1里面,程序不能正常运行。
2023-07-14 20:42:26 422
原创 终于明白了一点点super().__init__()
super().__init__()的意义是继承父类的__init__(),__init__()是初始化的意思。2、即使不写super().__init__(),子类也是自动继承了除父类的__init__()之外的所有方法。3、拥有多个父类的子类,如果各个父类拥有同样名称的方法,就继承最先遇到的。各个父类不同名称的方法,全部继承。1、super().后面不仅可以跟__init__(),也可以跟别的函数,其意义是继承于父类。一直在照猫画虎、稀里糊涂地用,看完这篇文章,终于搞清楚了一点点原理,记录一下,备忘。
2023-07-10 00:34:00 926 1
原创 博途利用MOVE_BLK_VARIANT实现混合数据类型的块移动
MOVE_BLK_VARIANT可以将一个数据块的指定数据区域移动到另一个数据块的指定数据区域,前提是源区域和目标区域的数据类型相同。MOVE_BLK_VARIANT的实际应用意义在于,可以将不同类型的连续数据块一次性传输(不支持bool类型),这在PLC与网络设备的通信中会有用得到。
2023-06-26 18:51:01 3314
原创 利用PYQT的QTimer制作一个带电平输出的双稳态时钟
PYQT的QTimer定时器与python自带的time.sleep()相比,定时期间并不会阻塞。很适合用作周期性的定时操作。
2023-06-17 22:14:33 61
原创 试试用pyqt做一个上位机软件,但愿不会烂尾(十二):通信内容的准备
感觉处理简单的excel功能,pandas没有openpyxl好用,就用了openpyxl,这不是重点,无所谓用哪个,达到目的就行。在博途生成的默认变量表,后面加入两列"T"和“RW",含义是通信周期和读写类型。
2023-04-04 23:41:38 427 2
试试用pyqt做一个上位机软件,但愿不会烂尾(七)配套资源
2023-03-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人