文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

前言

学习资料下载链接 提取码: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多进制转换工具的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯