Python Qt GUI设计:做一款串口调试助手(实战篇—1)

目录

1、UI设计

2、将UI文件转换为Py文件

3、逻辑功能实现

3.1、初始化程序

3.2、串口检测程序

3.3、 设置及打开串口程序

3.4、定时发送数据程序

3.5、发送数据程序

3.6、接收数据程序

3.7、保存日志程序

3.8、加载日志程序

3.9、打开博客、公众号程序

3.10、清除发送和接收数据显示程序

3.11、关闭串口程序


Python Qt GUI设计系列博文终于到了实战篇,本篇博文将贯穿之前的基础知识点实现一款串口调试助手。

关注【公众号】 美男子玩编程,回复关键字:串口调试助手,获取项目源码~

1、UI设计

UI设计使用Qt Creator实现,组件布局如下所示:

2、将UI文件转换为Py文件

这里使用Python脚本的方式将UI文件转换为Python文件,代码如下所示:

  1. import os

  2. import os.path

  3. dir ='./' #文件所在的路径

  4. #找出路径下所有的.ui文件

  5. def listUiFile():

  6. list = []

  7. files = os.listdir(dir)

  8. for filename in files:

  9. #print(filename)

  10. if os.path.splitext(filename)[1] == '.ui':

  11. list.append(filename)

  12. return list

  13. #把扩展名未.ui的转换成.py的文件

  14. def transPyFile(filename):

  15. return os.path.splitext(filename)[0] + '.py'

  16. #通过命令把.ui文件转换成.py文件

  17. def runMain():

  18. list = listUiFile()

  19. for uifile in list:

  20. pyfile = transPyFile(uifile)

  21. cmd = 'pyuic5 -o {pyfile} {uifile}'.format(pyfile=pyfile, uifile=uifile)

  22. os.system(cmd)

  23. if __name__ =="__main__":

  24. runMain()

3、逻辑功能实现

3.1、初始化程序

首先初始化一些组件和标志位的状态,设置信号与槽的关系,实现代码如下所示:

  1. # 初始化程序

  2. def __init__(self):

  3. super(Pyqt5_Serial, self).__init__()

  4. self.setupUi(self)

  5. self.init()

  6. self.ser = serial.Serial()

  7. self.port_check()

  8. # 设置Logo和标题

  9. self.setWindowIcon(QIcon('Com.png'))

  10. self.setWindowTitle("串口调试助手 【公众号】美男子玩编程")

  11. # 设置禁止拉伸窗口大小

  12. self.setFixedSize(self.width(), self.height())

  13. # 发送数据和接收数据数目置零

  14. self.data_num_sended = 0

  15. self.Lineedit2.setText(str(self.data_num_sended))

  16. self.data_num_received = 0

  17. self.Lineedit3.setText(str(self.data_num_received))

  18. # 串口关闭按钮使能关闭

  19. self.Pushbuttom3.setEnabled(False)

  20. # 发送框、文本框清除

  21. self.Text1.setText("")

  22. self.Text2.setText("")

  23. # 建立控件信号与槽关系

  24. def init(self):

  25. # 串口检测按钮

  26. self.Pushbuttom2.clicked.connect(self.port_check)

  27. # 串口打开按钮

  28. self.Pushbuttom1.clicked.connect(self.port_open)

  29. # 串口关闭按钮

  30. self.Pushbuttom3.clicked.connect(self.port_close)

  31. # 定时发送数据

  32. self.timer_send = QTimer()

  33. self.timer_send.timeout.connect(self.data_send)

  34. self.Checkbox7.stateChanged.connect(self.data_send_timer)

  35. # 发送数据按钮

  36. self.Pushbuttom6.clicked.connect(self.data_send)

  37. # 加载日志

  38. self.Pushbuttom4.clicked.connect(self.savefiles)

  39. # 加载日志

  40. self.Pushbuttom5.clicked.connect(self.openfiles)

  41. # 跳转链接

  42. self.commandLinkButton1.clicked.connect(self.link)

  43. # 清除发送按钮

  44. self.Pushbuttom7.clicked.connect(self.send_data_clear)

  45. # 清除接收按钮

  46. self.Pushbuttom8.clicked.connect(self.receive_data_clear)

3.2、串口检测程序

检测电脑上所有串口,实现代码如下所示:

  1. # 串口检测

  2. def port_check(self):

  3. # 检测所有存在的串口,将信息存储在字典中

  4. self.Com_Dict = {}

  5. port_list = list(serial.tools.list_ports.comports())

  6. self.Combobox1.clear()

  7. for port in port_list:

  8. self.Com_Dict["%s" % port[0]] = "%s" % port[1]

  9. self.Combobox1.addItem(port[0])

  10. # 无串口判断

  11. if len(self.Com_Dict) == 0:

  12. self.Combobox1.addItem("无串口")

3.3、 设置及打开串口程序

检测到串口后进行配置,打开串口,并且启动定时器一直接收用户输入,实现代码如下所示:

。。。。。。。。。。。。。。。。。

版权原因,完整文章,请参考如下:Python Qt GUI设计:做一款串口调试助手(实战篇—1)

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值