基于python语言的串口助手开发过程总结(Tkinter)

本文总结了基于Python语言使用Tkinter库开发串口助手的过程,包括明确任务目标,建立画布,确定控件及排布,编写控件和函数。详细介绍了Combobox控件的只读设置,Checkbutton的使用,以及串口连接、断开、发送和接收函数。还讨论了线程中的定时器threading.Timer和线程操作,并提供了Python中线程、串口列表获取、编码解码等实用技巧。
摘要由CSDN通过智能技术生成

1.明确任务目标

此次任务是‘基于python语言开发一个类似于SSCOM的串口助手’主要使用Tkinter这个库来进行GUI配置。

之前已经针对Tkinter库进行了相对集中的学习,具体链接参照( Tkinter是什么),主要是针对各种控件的使用以及各种控件对应的函数进行讲解,Tkinter中的函数还是比较多且详细的,使用起来也比较直观灵活。

2.开发步骤

如题‘基于python语言开发一个类似于SSCOM的串口助手’虽然拿到手一下子没什么头绪,但是我的思路是参照SSCOM把你需要的必须的控件先写好,串口不串口的首先不谈这个,大的方向肯定是先把控件全部排布好,再针对控件去做数据处理和函数绑定,所以我们首先把控件排布,就是GUI先排布设置初始化好。

1.画布建立

首先建立好画布再添加控件以及调整摆放位置。

from tkinter import *
root = Tk()
root.title("xccom")
root.iconbitmap(r"D:\PYthon\Port\x.ico")
root.geometry('500x500+400+100')

root.mainloop()

其实在这里我们依旧是没什么具体想法的,总之先建立好画布,其他的再说。

2.控件确定以及控件排布

具体需要什么控件,大概需要一个,串口列表、波特率列表、打开串口按键,断开串口按键,发送按键,这些是我们脑海里面的初步设想,接下来打开sscom来研究一下。(侵权联系可删)

通过sscom我们此时此刻大概就能理出来我们具体需要的控件列表了:三个Text文本框(发送和显示框,其中显示框包含了发送出去的内容和从串口接收到的内容、定时发送的时间框)、串口列表、波特率列表、清除窗口按钮、打开串口按钮、发送按钮、以及定时发送的复选框。此刻脑海里已经有了这个自己的串口助手的雏形了,可以自己先在纸上画出来,再对应的去建立,建立完了再根据自己的功能去酌情增减好了。以下 是我画的草图。

3.开始写控件

在这里我想说,所有控件的排布最好用place去写,控件排布一共有三个函数,分别是grid、place、和pack,这三个函数我个人更倾向于place,一开始也试过pack和grid但是,这两个函数我个人觉得怪怪的,不是很用的来。而且摆放函数如果用两种或者三种不同的话可能会报错,比如grid和pack一起用,你的一个工程里面控件1使用了grid控件2使用了pack很可能会出现编译不通过的情况,我个人更加倾向于place用全图,因为place相对而言比较灵活,通过x和y去调整位置,更加精确和方便。

root = Tk()
root.title("xccom")
root.iconbitmap(r"D:\PYthon\Port\x.ico")
root.geometry('500x500+400+100')

port_label = Label(root, text='选择串口')
port_label.place(x=15, y=10)

port_num = ttk.Combobox(root, width=15, state="readonly")
port_num.place(x=15, y=35)

new_button = Button(text='刷新串口')
new_button.place(x=84, y=4)

portlv_label = Label(root, text='选择波特率')
portlv_label.place(x=184, y=10)

port_bud = ttk.Combobox(root, values=[9600, 115200], width=15, state="readonly")
port_bud.place(x=184, y=35)

connect_button = Button(text='连接', width=7, height=2)
connect_button.place(x=350, y=10)

disconnect_button = Button(text='断开', width=7, height=2)
disconnect_button.place(x=420, y=10)

receive_box = Text(root, width=66, height=23, state="disable")
receive_box.place(x=15, y=70)

send_box = Text(root, width=42, height=6)
send_box.place(x=15, y= 390)

send_button = Button(text='发送', width=22, height=1)
send_button.place(x=320, y=390)

clear_button = Button(text='清除', width=10, height=2)
clear_button.place(x=404, y=425)

sbar = Scrollbar(root, command=receive_box.yview)
sbar.place(x=482, y=53, height=336)
receive_box.config(yscrollcommand=sbar.set)

check1_var = IntVar()
check1 = Checkbutton(root, text='定时发送
  • 31
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值