目录
  • 前言
  • 主要步骤
  • 完整代码

前言

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

主要步骤

导入模块

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多进制转换工具的资料请关注www.887551.com其它相关文章!