博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python小工具——格雷码转换器
阅读量:2576 次
发布时间:2019-05-11

本文共 2206 字,大约阅读时间需要 7 分钟。

介绍:

格雷码在光电编码器、步进电机等工程应用中使用比较广泛。相较于原始的二进制码,在工程使用中容错率和精度都要高出许多,具体详见:

小编制作的格雷码转化器使用字符串进行操作,故对输入长度没有太大限制。

效果如下图所示:

不废话了,以下是代码:

#!/usr/bin/python # -*- coding: UTF-8 -*-from tkinter import *from tkinter import scrolledtext,messageboximport rewin_main = Tk()win_main["background"] = "gray"win_main["width"] = 1000win_main["height"] = 600win_main.title("格雷码转换器")win_main.resizable(FALSE, FALSE)lbl_Binary_Title = Label(win_main, justify=LEFT)lbl_Binary_Title['text'] = '普通二进制码'lbl_Binary_Title['background'] = "white"lbl_Binary_Title.place(width=300, height=25, x=100, y=100)stxt_Binary_InOut = scrolledtext.ScrolledText(win_main)stxt_Binary_InOut.place(width=300, height=375, x=100, y=125)lbl_Gray_Title = Label(win_main, justify=LEFT)lbl_Gray_Title['text'] = '格雷码'lbl_Gray_Title['background'] = "white"lbl_Gray_Title.place(width=300, height=25, x=600, y=100)stxt_Gray_InOut = scrolledtext.ScrolledText(win_main)stxt_Gray_InOut.place(width=300, height=375, x=600, y=125)def cmd_BinaryToGray():    b_data=stxt_Binary_InOut.get(0.0,END).strip()    # print(type(b_data),len(b_data))    regex = re.compile('[10]+')    if regex.fullmatch(b_data)==None:        messagebox.showinfo('注意','二进制输入格式错误!')        return    g_data = b_data[0]    for i in range(len(b_data) - 1):        if b_data[i]==b_data[i + 1]:            g_data += '0'        else:            g_data += '1'    stxt_Gray_InOut.delete(0.0,END)    stxt_Gray_InOut.insert(END,g_data)    returnbtn_BinaryToGray = Button(win_main, justify=CENTER, text="——>", command=cmd_BinaryToGray)btn_BinaryToGray.place(width=180, height=50, x=410, y=200)def cmd_GrayToBinary():    g_data = stxt_Gray_InOut.get(0.0, END).strip()    regex = re.compile('[10]+')    if regex.fullmatch(g_data) == None:        messagebox.showinfo('注意', '格雷码输入格式错误!')        return    b_data = g_data[0]    for i in range(len(g_data) - 1):        if b_data[i] == g_data[i + 1]:            b_data += '0'        else:            b_data += '1'    stxt_Binary_InOut.delete(0.0, END)    stxt_Binary_InOut.insert(END, b_data)    returnbtn_GrayToBinary = Button(win_main, justify=CENTER, text="<——", command=cmd_GrayToBinary)btn_GrayToBinary.place(width=180, height=50, x=410, y=350)win_main.mainloop()

 

你可能感兴趣的文章
【JMeter】1.9上考试jmeter测试调试
查看>>
【虫师】【selenium】参数化
查看>>
【Python练习】文件引用用户名密码登录系统
查看>>
学习网站汇总
查看>>
【Python】用Python打开csv和xml文件
查看>>
【Loadrunner】性能测试报告实战
查看>>
【自动化测试】自动化测试需要了解的的一些事情。
查看>>
【selenium】selenium ide的安装过程
查看>>
【手机自动化测试】monkey测试
查看>>
【英语】软件开发常用英语词汇
查看>>
Fiddler 抓包工具总结
查看>>
【雅思】雅思需要购买和准备的学习资料
查看>>
【雅思】雅思写作作业(1)
查看>>
【雅思】【大作文】【审题作业】关于同不同意的审题作业(重点)
查看>>
【Loadrunner】通过loadrunner录制时候有事件但是白页无法出来登录页怎么办?
查看>>
【English】【托业】【四六级】写译高频词汇
查看>>
【托业】【新东方全真模拟】01~02-----P5~6
查看>>
【托业】【新东方全真模拟】03~04-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST05~06-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST09~10-----P5~6
查看>>