基於Python制作一個多進制轉換工具

前言

學習資料下載鏈接 提取碼: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多進制轉換工具的資料請關註WalkonNet其它相關文章!

推薦閱讀: