基于Python制作一个多进制转换工具

 更新时间:2022年02月10日 16:10:37   作者:小木_.  
这篇文章主要介绍了如何利用Python制作一个多进制转换工具,可以实现2进制、4进制、8进制、10进制、16进制、32进制直接的互转,需要的可以参考一下

前言

学习资料下载链接 提取码:9d4g  进制转换计算工具含源文件

主要步骤

导入模块

import tkinter
from tkinter import *
import tkinter as tk
from tkinter.ttk import *

整个框架的主结构

root = Tk()
root.title('贱工坊-进制转换计算')  # 程序的标题名称
root.geometry("580x400+512+288")  # 窗口的大小及页面的显示位置
root.resizable(False, False)  # 固定页面不可放大缩小
root.iconbitmap("picture.ico")  # 程序的图标

GUI框架插入图片,视觉感受

canvas = tkinter.Canvas(root, bg="#ebebeb", height=400, width=700, borderwidth=-3)  # 创建画布
canvas.pack(side='top')  # 放置画布(为上端)
try:
    image_file = tkinter.PhotoImage(file="./chart.png")  # 加载图片文件
    canvas.create_image(0, 0, anchor='nw', image=image_file)  # 将图片置于画布上
except:
    pass

信息输入框

# 信息输入
var_ = tkinter.StringVar()
input_var_ = tk.Entry(root,width=34,textvariable=var_,
                                            font=('微软雅黑', 10),bg='#ebebeb',fg='red', borderwidth=0.7)
input_var_.place(x=10, y=4)

信息输出框

# 二进制
var_2bin = tkinter.StringVar()
input_2bin = tk.Entry(root,width=23,textvariable=var_2bin,
                                            font=('微软雅黑', 10),bg='#ebebeb',fg='red', borderwidth=0.7)
input_2bin.place(x=16, y=200)
 
# 八进制
var_8oct = tkinter.StringVar()
input_8oct = tk.Entry(root,width=24,textvariable=var_8oct,
                                            font=('微软雅黑', 10),bg='#ebebeb',fg='red', borderwidth=0.7)
input_8oct.place(x=194, y=240)
 
# 十进制
var_10int = tkinter.StringVar()
input_10int = tk.Entry(root,width=23,textvariable=var_10int,
                                            font=('微软雅黑', 10),bg='#ebebeb',fg='red', borderwidth=0.7)
input_10int.place(x=380, y=200)
 
# 十六进制
var_16hex = tkinter.StringVar()
input_16hex = tk.Entry(root,width=23,textvariable=var_16hex,
                                            font=('微软雅黑', 10),bg='#ebebeb',fg='red', borderwidth=0.7)
input_16hex.place(x=70, y=300)
 
# 三十二进制
var_32baseN = tkinter.StringVar()
input_32baseN = tk.Entry(root,width=23,textvariable=var_32baseN,
                                            font=('微软雅黑', 10),bg='#ebebeb',fg='red', borderwidth=0.7)
input_32baseN.place(x=326, y=300)

用来清空输出框

# 清空
def cls():
    input_2bin.delete(0, 'end')
    input_8oct.delete(0, 'end')
    input_10int.delete(0, 'end')
    input_16hex.delete(0, 'end')
    input_32baseN.delete(0, 'end')

转换数据的主要核心,bin、oct、int、hex,

# 二进制转换
def bin2():
    cls()
    try:
        input_2bin.insert('end',bin(int(var_.get(), 2)))  # 2进制 转 2进制
    except:
        input_2bin.insert('end','转换失败')
 
    try:
        input_8oct.insert('end',oct(int(var_.get(), 2)))  # 2进制 转 8进制
    except:
        input_8oct.insert('end','转换失败')
 
    try:
        input_10int.insert('end',str(int(var_.get(), 2)))  # 2进制 转 10进制
    except:
        input_10int.insert('end','转换失败')
 
    try:
        input_16hex.insert('end',hex(int(var_.get(), 2)))  # 2进制 转 16进制
    except:
        input_16hex.insert('end','转换失败')
 
    input_32baseN.insert('end','转换失败')
# 四进制转换
def bin4():
    cls()
    try:
        input_2bin.insert('end',bin(int(var_.get(), 4)))  # 4进制 转 2进制
    except:
        input_2bin.insert('end','转换失败')
 
    try:
        input_8oct.insert('end',oct(int(var_.get(), 4)))  # 4进制 转 8进制
    except:
        input_8oct.insert('end','转换失败')
 
    try:
        input_10int.insert('end',str(int(var_.get(), 4)))  # 4进制 转 10进制
    except:
        input_10int.insert('end','转换失败')
 
    try:
        input_16hex.insert('end',hex(int(var_.get(), 4)))  # 4进制 转 16进制
    except:
        input_16hex.insert('end','转换失败')
 
    input_32baseN.insert('end','转换失败')
# 八进制转换
def oct8():
    cls()
    try:
        input_2bin.insert('end',bin(int(var_.get(), 8)))  # 8进制 转 2进制
    except:
        input_2bin.insert('end','转换失败')
 
    try:
        input_8oct.insert('end',oct(int(var_.get(), 8)))  # 8进制 转 8进制
    except:
        input_8oct.insert('end','转换失败')
 
    try:
        input_10int.insert('end',str(int(var_.get(), 8)))  # 8进制 转 10进制
    except:
        input_10int.insert('end','转换失败')
 
    try:
        input_16hex.insert('end',hex(int(var_.get(), 8)))  # 8进制 转 16进制
    except:
        input_16hex.insert('end','转换失败')
 
    input_32baseN.insert('end','转换失败')
# 十进制转换
def int10():
    cls()
    try:
        input_2bin.insert('end',bin(int(var_.get(), 10)))  # 10进制 转 2进制
    except:
        input_2bin.insert('end','转换失败')
 
    try:
        input_8oct.insert('end',oct(int(var_.get(), 10)))  # 10进制 转 8进制
    except:
        input_8oct.insert('end','转换失败')
 
    try:
        input_10int.insert('end',str(int(var_.get(), 10)))  # 10进制 转 10进制
    except:
        input_10int.insert('end','转换失败')
 
    try:
        input_16hex.insert('end',hex(int(var_.get(), 10)))  # 10进制 转 16进制
    except:
        input_16hex.insert('end','转换失败')
 
    def baseN(num, b):
        return ((num == 0) and "0") or \
               (baseN(num // b, b).lstrip("0") + "0123456789abcdefghijklmnopqrstuvwxyz"[num % b])
    try:
        input_32baseN.insert('end',baseN(int(var_.get()), 32))  # 10进制 转 32进制
    except:
        input_32baseN.insert('end','转换失败')
# 十六进制转换
def hex16():
    cls()
    try:
        input_2bin.insert('end',bin(int(var_.get(), 16)))  # 16进制 转 2进制
    except:
        input_2bin.insert('end','转换失败')
 
    try:
        input_8oct.insert('end',oct(int(var_.get(), 16)))  # 16进制 转 8进制
    except:
        input_8oct.insert('end','转换失败')
 
    try:
        input_10int.insert('end',str(int(var_.get(), 16)))  # 16进制 转 10进制
    except:
        input_10int.insert('end','转换失败')
 
    try:
        input_16hex.insert('end',hex(int(var_.get(), 16)))  # 16进制 转 16进制
    except:
        input_16hex.insert('end','转换失败')
 
    input_32baseN.insert('end','转换失败')
# 十六进制转换
def baseN32():
    cls()
    try:
        input_2bin.insert('end',bin(int(var_.get(), 32)))  # 32进制 转 2进制
    except:
        input_2bin.insert('end','转换失败')
 
    try:
        input_8oct.insert('end',oct(int(var_.get(), 32)))  # 32进制 转 8进制
    except:
        input_8oct.insert('end','转换失败')
 
    try:
        input_10int.insert('end',str(int(var_.get(), 32)))  # 32进制 转 10进制
    except:
        input_10int.insert('end','转换失败')
 
    try:
        input_16hex.insert('end',hex(int(var_.get(), 32)))  # 32进制 转 16进制
    except:
        input_16hex.insert('end','转换失败')
 
    input_32baseN.insert('end','转换失败')

按钮插入

Button(root, text='二进制转换',command=bin2).place(x=13, y=30)
Button(root, text='四进制转换',command=bin4).place(x=103, y=30)
Button(root, text='八进制转换',command=oct8).place(x=193, y=30)
 
Button(root, text='十进制转换',command=int10).place(x=13, y=60)
Button(root, text='十六进制转换',command=hex16).place(x=103, y=60)
Button(root, text='三十二进制转',command=baseN32).place(x=193, y=60)

不仅好用,还可以装逼,可将你的QQ号转为16进制用QQ进行登录,装逼再好不过了

看效果:已打包

上方有链接可供下载

完整代码

import tkinter
from tkinter import *
import tkinter as tk
from tkinter.ttk import *
 
root = Tk()
root.title('贱工坊-进制转换计算')  # 程序的标题名称
root.geometry("580x400+512+288")  # 窗口的大小及页面的显示位置
root.resizable(False, False)  # 固定页面不可放大缩小
root.iconbitmap("picture.ico")  # 程序的图标
 
canvas = tkinter.Canvas(root, bg="#ebebeb", height=400, width=700, borderwidth=-3)  # 创建画布
canvas.pack(side='top')  # 放置画布(为上端)
try:
    image_file = tkinter.PhotoImage(file="./chart.png")  # 加载图片文件
    canvas.create_image(0, 0, anchor='nw', image=image_file)  # 将图片置于画布上
except:
    pass
 
# 信息输入
var_ = tkinter.StringVar()
input_var_ = tk.Entry(root,width=34,textvariable=var_,
                                            font=('微软雅黑', 10),bg='#ebebeb',fg='red', borderwidth=0.7)
input_var_.place(x=10, y=4)
 
# 二进制
var_2bin = tkinter.StringVar()
input_2bin = tk.Entry(root,width=23,textvariable=var_2bin,
                                            font=('微软雅黑', 10),bg='#ebebeb',fg='red', borderwidth=0.7)
input_2bin.place(x=16, y=200)
 
# 八进制
var_8oct = tkinter.StringVar()
input_8oct = tk.Entry(root,width=24,textvariable=var_8oct,
                                            font=('微软雅黑', 10),bg='#ebebeb',fg='red', borderwidth=0.7)
input_8oct.place(x=194, y=240)
 
# 十进制
var_10int = tkinter.StringVar()
input_10int = tk.Entry(root,width=23,textvariable=var_10int,
                                            font=('微软雅黑', 10),bg='#ebebeb',fg='red', borderwidth=0.7)
input_10int.place(x=380, y=200)
 
# 十六进制
var_16hex = tkinter.StringVar()
input_16hex = tk.Entry(root,width=23,textvariable=var_16hex,
                                            font=('微软雅黑', 10),bg='#ebebeb',fg='red', borderwidth=0.7)
input_16hex.place(x=70, y=300)
 
# 三十二进制
var_32baseN = tkinter.StringVar()
input_32baseN = tk.Entry(root,width=23,textvariable=var_32baseN,
                                            font=('微软雅黑', 10),bg='#ebebeb',fg='red', borderwidth=0.7)
input_32baseN.place(x=326, y=300)
 
base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)]
# 清空
def cls():
    input_2bin.delete(0, 'end')
    input_8oct.delete(0, 'end')
    input_10int.delete(0, 'end')
    input_16hex.delete(0, 'end')
    input_32baseN.delete(0, 'end')
 
# 二进制转换
def bin2():
    cls()
    try:
        input_2bin.insert('end',bin(int(var_.get(), 2)))  # 2进制 转 2进制
    except:
        input_2bin.insert('end','转换失败')
 
    try:
        input_8oct.insert('end',oct(int(var_.get(), 2)))  # 2进制 转 8进制
    except:
        input_8oct.insert('end','转换失败')
 
    try:
        input_10int.insert('end',str(int(var_.get(), 2)))  # 2进制 转 10进制
    except:
        input_10int.insert('end','转换失败')
 
    try:
        input_16hex.insert('end',hex(int(var_.get(), 2)))  # 2进制 转 16进制
    except:
        input_16hex.insert('end','转换失败')
 
    input_32baseN.insert('end','转换失败')
# 四进制转换
def bin4():
    cls()
    try:
        input_2bin.insert('end',bin(int(var_.get(), 4)))  # 4进制 转 2进制
    except:
        input_2bin.insert('end','转换失败')
 
    try:
        input_8oct.insert('end',oct(int(var_.get(), 4)))  # 4进制 转 8进制
    except:
        input_8oct.insert('end','转换失败')
 
    try:
        input_10int.insert('end',str(int(var_.get(), 4)))  # 4进制 转 10进制
    except:
        input_10int.insert('end','转换失败')
 
    try:
        input_16hex.insert('end',hex(int(var_.get(), 4)))  # 4进制 转 16进制
    except:
        input_16hex.insert('end','转换失败')
 
    input_32baseN.insert('end','转换失败')
# 八进制转换
def oct8():
    cls()
    try:
        input_2bin.insert('end',bin(int(var_.get(), 8)))  # 8进制 转 2进制
    except:
        input_2bin.insert('end','转换失败')
 
    try:
        input_8oct.insert('end',oct(int(var_.get(), 8)))  # 8进制 转 8进制
    except:
        input_8oct.insert('end','转换失败')
 
    try:
        input_10int.insert('end',str(int(var_.get(), 8)))  # 8进制 转 10进制
    except:
        input_10int.insert('end','转换失败')
 
    try:
        input_16hex.insert('end',hex(int(var_.get(), 8)))  # 8进制 转 16进制
    except:
        input_16hex.insert('end','转换失败')
 
    input_32baseN.insert('end','转换失败')
# 十进制转换
def int10():
    cls()
    try:
        input_2bin.insert('end',bin(int(var_.get(), 10)))  # 10进制 转 2进制
    except:
        input_2bin.insert('end','转换失败')
 
    try:
        input_8oct.insert('end',oct(int(var_.get(), 10)))  # 10进制 转 8进制
    except:
        input_8oct.insert('end','转换失败')
 
    try:
        input_10int.insert('end',str(int(var_.get(), 10)))  # 10进制 转 10进制
    except:
        input_10int.insert('end','转换失败')
 
    try:
        input_16hex.insert('end',hex(int(var_.get(), 10)))  # 10进制 转 16进制
    except:
        input_16hex.insert('end','转换失败')
 
    def baseN(num, b):
        return ((num == 0) and "0") or \
               (baseN(num // b, b).lstrip("0") + "0123456789abcdefghijklmnopqrstuvwxyz"[num % b])
    try:
        input_32baseN.insert('end',baseN(int(var_.get()), 32))  # 10进制 转 32进制
    except:
        input_32baseN.insert('end','转换失败')
# 十六进制转换
def hex16():
    cls()
    try:
        input_2bin.insert('end',bin(int(var_.get(), 16)))  # 16进制 转 2进制
    except:
        input_2bin.insert('end','转换失败')
 
    try:
        input_8oct.insert('end',oct(int(var_.get(), 16)))  # 16进制 转 8进制
    except:
        input_8oct.insert('end','转换失败')
 
    try:
        input_10int.insert('end',str(int(var_.get(), 16)))  # 16进制 转 10进制
    except:
        input_10int.insert('end','转换失败')
 
    try:
        input_16hex.insert('end',hex(int(var_.get(), 16)))  # 16进制 转 16进制
    except:
        input_16hex.insert('end','转换失败')
 
    input_32baseN.insert('end','转换失败')
# 十六进制转换
def baseN32():
    cls()
    try:
        input_2bin.insert('end',bin(int(var_.get(), 32)))  # 32进制 转 2进制
    except:
        input_2bin.insert('end','转换失败')
 
    try:
        input_8oct.insert('end',oct(int(var_.get(), 32)))  # 32进制 转 8进制
    except:
        input_8oct.insert('end','转换失败')
 
    try:
        input_10int.insert('end',str(int(var_.get(), 32)))  # 32进制 转 10进制
    except:
        input_10int.insert('end','转换失败')
 
    try:
        input_16hex.insert('end',hex(int(var_.get(), 32)))  # 32进制 转 16进制
    except:
        input_16hex.insert('end','转换失败')
 
    input_32baseN.insert('end','转换失败')
 
 
Button(root, text='二进制转换',command=bin2).place(x=13, y=30)
Button(root, text='四进制转换',command=bin4).place(x=103, y=30)
Button(root, text='八进制转换',command=oct8).place(x=193, y=30)
 
Button(root, text='十进制转换',command=int10).place(x=13, y=60)
Button(root, text='十六进制转换',command=hex16).place(x=103, y=60)
Button(root, text='三十二进制转',command=baseN32).place(x=193, y=60)
 
root.mainloop()

以上就是基于Python制作一个多进制转换工具的详细内容,更多关于Python多进制转换工具的资料请关注脚本之家其它相关文章!

相关文章

  • 用Python生成N层的杨辉三角的实现方法

    用Python生成N层的杨辉三角的实现方法

    这篇文章主要介绍了用Python生成N层的杨辉三角的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 教你用Python按顺序读取文件夹中文件

    教你用Python按顺序读取文件夹中文件

    最近工作中读取文件时经常遇上比较复杂的情况,所以下面这篇文章主要给大家介绍了关于如何利用Python按顺序读取文件夹中文件的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • python字符串拼接和列表拼接方式

    python字符串拼接和列表拼接方式

    这篇文章主要介绍了python字符串拼接和列表拼接方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • python实现自动登录后台管理系统

    python实现自动登录后台管理系统

    这篇文章主要为大家详细介绍了python实现自动登录后台管理系统,并进行后续操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • Python实现一个转存纯真IP数据库的脚本分享

    Python实现一个转存纯真IP数据库的脚本分享

    工作中我们常需要使用纯真IP数据库内的数据做分析,下面这篇文章主要给大家介绍了利用Python如何实现一个转存纯真IP数据库的相关资料,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-05-05
  • Python实现从文件中加载数据的方法详解

    Python实现从文件中加载数据的方法详解

    日常工作中有许多类型的文件,以及许多方法,用它们从文件中提取数据来图形化。本文将利用Python实现从文件中加载数据,感兴趣的可以了解一下
    2022-04-04
  • react中useLayoutEffect 和useEffect区别

    react中useLayoutEffect 和useEffect区别

    本文主要介绍了react中useLayoutEffect 和useEffect区别,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • python生成器表达式和列表解析

    python生成器表达式和列表解析

    最近在学习python的过程中,对列表解析及生成器表达式有点疑惑。从表面上看,两者很相似,只有一点不同:列表解析采用中括号[]来包含,生成器表达式采用小括号()来包含。本文我们就来详细看下python生成器表达式和列表解析
    2016-03-03
  • matplotlib 纵坐标轴显示数据值的实例

    matplotlib 纵坐标轴显示数据值的实例

    今天小编就为大家分享一篇matplotlib 纵坐标轴显示数据值的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • flask/django 动态查询表结构相同表名不同数据的Model实现方法

    flask/django 动态查询表结构相同表名不同数据的Model实现方法

    今天小编就为大家分享一篇flask/django 动态查询表结构相同表名不同数据的Model实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08

最新评论