小伤口 发表于 2021-12-7 00:36:17

tkinter:16进制批量转换10进制

本帖最后由 小伤口 于 2021-12-7 00:35 编辑

前言

好久都没有发帖了还是来冒泡一下{:10_264:},不知道论坛的老熟人还在吗{:10_243:}
恰逢现在正在做智能车,需要通过串口采集赛道宽度数据,但是通常发来的是16进制,如图



一个个转换太麻烦了{:10_266:} ,就用 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 程序{:9_236:}

有详细注释
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,16))
      
    """
    一行显示10个数据,每个数据用逗号隔开,
    最后一个不加逗号
    """
    for i in range(len(storageTen)):
      if (i%10==0 and i!=0):
            text.insert(INSERT,"\n")#添加内容
      text.insert(INSERT,storageTen)#添加内容
      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 连连{:10_266:} )





最后欢迎关注小伤口公众号{:10_297:}
如果智能车到时候做的不错的话,考虑讲解一些处理方法和开源代码{:10_256:}

阿萨德按时 发表于 2021-12-7 08:27:42

{:10_254:}

hrpzcf 发表于 2021-12-7 08:56:12

智能车{:10_254:}

小伤口 发表于 2021-12-7 11:22:10

hrpzcf 发表于 2021-12-7 08:56
智能车

可惜我的车子跑的很慢{:10_250:}

隔壁繁星吖 发表于 2021-12-7 11:59:12

芜湖!好厉害!

zhsguitar 发表于 2021-12-7 12:18:45

{:10_254:}{:10_254:}

心驰神往 发表于 2021-12-7 13:01:59

真大佬

伽羅~ 发表于 2021-12-7 13:34:38

{:10_254:}

tianlai7266 发表于 2021-12-7 13:37:43

{:10_254:}

非凡 发表于 2021-12-7 13:54:22

不知道啥是智能库,但大受震撼{:10_275:}

小伤口 发表于 2021-12-7 14:21:03

隔壁繁星吖 发表于 2021-12-7 11:59
芜湖!好厉害!

谢谢支持{:10_278:}

小伤口 发表于 2021-12-7 14:21:43

非凡 发表于 2021-12-7 13:54
不知道啥是智能库,但大受震撼

{:10_278:}谢谢支持

小伤口 发表于 2021-12-7 14:22:13

心驰神往 发表于 2021-12-7 13:01
真大佬

没有,其实很菜了{:10_266:}

小薛王 发表于 2021-12-7 15:27:15

学习学习{:10_265:}

w5538475 发表于 2021-12-7 16:09:43

厉害啊{:10_257:}

ohhohh 发表于 2021-12-7 16:48:53

{:10_256:}

myqf123 发表于 2021-12-7 18:05:11

{:5_106:}

全桥整流 发表于 2021-12-7 20:19:12

{:5_109:}

划句顾 发表于 2021-12-7 20:28:35

芜湖,小伤口超级nice啊,这些作品摩多摩多{:10_256:}

sampsom 发表于 2021-12-7 20:42:25

萌新学习,谢谢大佬,大佬真好!
页: [1] 2 3
查看完整版本: tkinter:16进制批量转换10进制