|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 小伤口 于 2021-12-7 00:35 编辑
前言
好久都没有发帖了还是来冒泡一下 ,不知道论坛的老熟人还在吗
恰逢现在正在做智能车,需要通过串口采集赛道宽度数据,但是通常发来的是16进制,如图
一个个转换太麻烦了 ,就用 tkinter 写了一个简单的转换器
程序界面
使用方法
批量转换的 16 进制数据每个之间都需要间隔一个空格然后复制到如图所示的位置
例如你可以试试下面的16进制数据
- 20 21 22 22 22 23 24 25 25 25 26 26 27 27 28 28 28 29 29 2A 2A 2B 2B
- 2C 2C 2D 2D 2E 2E 2F 2F 30 30 31 31 32 32 33 34 34 35 35 36 36 37 38
- 38 39 39 3A 3A 3B 3B 3C 3C 3D 3D 3E 3E 3F
复制代码
代码
程序本身的功能对于大家可能来说没什么用但是如果是刚学 tkinter 的鱼油可以把这个代码当做一个模板来建造其他的
tkinter 程序
有详细注释
- from tkinter import *
- """
- *用途:将16进制转换为10进制
- *参数:temp 16进制
- *注意:每个16进制后面要加一个空格
- *返回值:无
- """
- def Conversion(temp):
-
- storageSixteen=[]#存储传来的16进制数
- deal=[]#将16进制进行一些处理
- storageTen=[]#存储转换后的10进制数
-
- text.delete(1.0,END)#先清空
- """
- 将空格除去只保留16进制并存储到deal中
- """
- for i in temp:
- if i==" ":
- x="".join(storageSixteen)
- deal.append(x)
- storageSixteen=[]
- else:
- storageSixteen.append(i)
-
- """
- 开始将16进制转换为10进制并保存到storageTen中
- """
- for i in range(len(deal)):
- storageTen.append(int(deal[i],16))
-
- """
- 一行显示10个数据,每个数据用逗号隔开,
- 最后一个不加逗号
- """
- for i in range(len(storageTen)):
- if (i%10==0 and i!=0):
- text.insert(INSERT,"\n")#添加内容
- text.insert(INSERT,storageTen[i])#添加内容
- if (i!=len(storageTen)-1):
- text.insert(INSERT,",")#添加内容
-
- text.insert(INSERT,"\n\n")#添加内容
- text.insert(INSERT,"总共有:")#添加内容
- text.insert(INSERT,len(storageTen))#添加内容
- text.insert(INSERT,"个数据")#添加内容
-
-
- """
- *用途:调用Conversion函数并获取文本框的内容
- *参数:无
- *返回值:无
- """
- def begin():
- temp=e.get()#文本框的内容
- Conversion(temp)#调用函数
- """
- *用途:显示作者信息
- *参数:无
- *返回值:无
- """
- def author():
- top=Toplevel()
- #设置窗口的大小宽x高+偏移量
- top.geometry('150x150')
- # 禁止窗口拉伸
- top.resizable(width=False, height=False)
- top.title('小伤口')#标题
- top.configure(bg='pink')
- mag=Message(top,text="""作者:小伤口
- 欢迎微信搜索小伤口
- 关注小伤口微信公众号^_^""",bg='LightSkyBlue',font=('幼圆',10))
- mag.pack()
- """
- *用途:讲解如何使用
- *参数:无
- *返回值:无
- """
- def manual():
- top=Toplevel()
- #设置窗口的大小宽x高+偏移量
- top.geometry('250x200')
- # 禁止窗口拉伸
- top.resizable(width=False, height=False)
- top.title('小伤口')#标题
- top.configure(bg='pink')
- mag=Message(top,text="""最上方输入16进制的数字
- 每一个数字之后都要加一个空格例如
- 06 A5 A4 09 (记得最后也要加一个空格)
- 然后点击开始转换即可变成10进制的数字
- (ctrl+a全选 ctrl+c复制 ctrl+v粘贴)
- """,bg='LightSkyBlue',font=('幼圆',10))
- mag.pack()
- master = Tk()
- #设置窗口的大小宽x高+偏移量
- master.geometry('250x250')
- # 禁止窗口拉伸
- master.resizable(width=False, height=False)
- #设置窗口标题
- master.title('简易转换器')
- #设置窗口颜色
- master.configure(bg="LightPink")
- #文本框(entry)
- e=Entry(master,bg="LightPink",font=('幼圆',10))
- e.delete(0,END)#清空内容
- #文本
- label=Label(master,text="""每个16进制后面
- 要加一个空格(末尾也要加)""",bg="LightPink",font=('幼圆',10),foreground="red")
- #顶级菜单
- menu=Menu(master)
- menu.add_cascade(label='作者',command=author)
- menu.add_cascade(label='使用说明',command=manual)
- #文本框(text)
- text=Text(master,bg="steelblue")
- #按钮
- b=Button(master,text='开始转换',command=begin,bg="steelblue",
- relief=FLAT,activebackground="steelblue",font=('幼圆',10),foreground="black")
- #各组件的位置分布
- label.pack()
- e.pack()
- b.pack(pady=10)
- text.pack()
- master.config(menu=menu)#config设置选型的内容,将root和menubar关联起来
- mainloop()
复制代码
结尾
放两张我的智能车图片吧
(本人目前很菜连十字补线目前也是 bug 连连 )
最后欢迎关注小伤口公众号
如果智能车到时候做的不错的话,考虑讲解一些处理方法和开源代码 |
评分
-
查看全部评分
|