首頁 > 軟體

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

2022-02-09 19:00:03

前言

學習資料下載連結 提取碼: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多進位制轉換工具的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com