基于Python制作一個多進制轉(zhuǎn)換工具
前言

學習資料下載鏈接 提取碼:9d4g 進制轉(zhuǎn)換計算工具含源文件
主要步驟
導入模塊
import tkinter from tkinter import * import tkinter as tk from tkinter.ttk import *
整個框架的主結構
root = Tk()
root.title('賤工坊-進制轉(zhuǎn)換計算') # 程序的標題名稱
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) # 創(chuàng)建畫布
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')
轉(zhuǎn)換數(shù)據(jù)的主要核心,bin、oct、int、hex,
# 二進制轉(zhuǎn)換
def bin2():
cls()
try:
input_2bin.insert('end',bin(int(var_.get(), 2))) # 2進制 轉(zhuǎn) 2進制
except:
input_2bin.insert('end','轉(zhuǎn)換失敗')
try:
input_8oct.insert('end',oct(int(var_.get(), 2))) # 2進制 轉(zhuǎn) 8進制
except:
input_8oct.insert('end','轉(zhuǎn)換失敗')
try:
input_10int.insert('end',str(int(var_.get(), 2))) # 2進制 轉(zhuǎn) 10進制
except:
input_10int.insert('end','轉(zhuǎn)換失敗')
try:
input_16hex.insert('end',hex(int(var_.get(), 2))) # 2進制 轉(zhuǎn) 16進制
except:
input_16hex.insert('end','轉(zhuǎn)換失敗')
input_32baseN.insert('end','轉(zhuǎn)換失敗')
# 四進制轉(zhuǎn)換
def bin4():
cls()
try:
input_2bin.insert('end',bin(int(var_.get(), 4))) # 4進制 轉(zhuǎn) 2進制
except:
input_2bin.insert('end','轉(zhuǎn)換失敗')
try:
input_8oct.insert('end',oct(int(var_.get(), 4))) # 4進制 轉(zhuǎn) 8進制
except:
input_8oct.insert('end','轉(zhuǎn)換失敗')
try:
input_10int.insert('end',str(int(var_.get(), 4))) # 4進制 轉(zhuǎn) 10進制
except:
input_10int.insert('end','轉(zhuǎn)換失敗')
try:
input_16hex.insert('end',hex(int(var_.get(), 4))) # 4進制 轉(zhuǎn) 16進制
except:
input_16hex.insert('end','轉(zhuǎn)換失敗')
input_32baseN.insert('end','轉(zhuǎn)換失敗')
# 八進制轉(zhuǎn)換
def oct8():
cls()
try:
input_2bin.insert('end',bin(int(var_.get(), 8))) # 8進制 轉(zhuǎn) 2進制
except:
input_2bin.insert('end','轉(zhuǎn)換失敗')
try:
input_8oct.insert('end',oct(int(var_.get(), 8))) # 8進制 轉(zhuǎn) 8進制
except:
input_8oct.insert('end','轉(zhuǎn)換失敗')
try:
input_10int.insert('end',str(int(var_.get(), 8))) # 8進制 轉(zhuǎn) 10進制
except:
input_10int.insert('end','轉(zhuǎn)換失敗')
try:
input_16hex.insert('end',hex(int(var_.get(), 8))) # 8進制 轉(zhuǎn) 16進制
except:
input_16hex.insert('end','轉(zhuǎn)換失敗')
input_32baseN.insert('end','轉(zhuǎn)換失敗')
# 十進制轉(zhuǎn)換
def int10():
cls()
try:
input_2bin.insert('end',bin(int(var_.get(), 10))) # 10進制 轉(zhuǎn) 2進制
except:
input_2bin.insert('end','轉(zhuǎn)換失敗')
try:
input_8oct.insert('end',oct(int(var_.get(), 10))) # 10進制 轉(zhuǎn) 8進制
except:
input_8oct.insert('end','轉(zhuǎn)換失敗')
try:
input_10int.insert('end',str(int(var_.get(), 10))) # 10進制 轉(zhuǎn) 10進制
except:
input_10int.insert('end','轉(zhuǎn)換失敗')
try:
input_16hex.insert('end',hex(int(var_.get(), 10))) # 10進制 轉(zhuǎn) 16進制
except:
input_16hex.insert('end','轉(zhuǎn)換失敗')
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進制 轉(zhuǎn) 32進制
except:
input_32baseN.insert('end','轉(zhuǎn)換失敗')
# 十六進制轉(zhuǎn)換
def hex16():
cls()
try:
input_2bin.insert('end',bin(int(var_.get(), 16))) # 16進制 轉(zhuǎn) 2進制
except:
input_2bin.insert('end','轉(zhuǎn)換失敗')
try:
input_8oct.insert('end',oct(int(var_.get(), 16))) # 16進制 轉(zhuǎn) 8進制
except:
input_8oct.insert('end','轉(zhuǎn)換失敗')
try:
input_10int.insert('end',str(int(var_.get(), 16))) # 16進制 轉(zhuǎn) 10進制
except:
input_10int.insert('end','轉(zhuǎn)換失敗')
try:
input_16hex.insert('end',hex(int(var_.get(), 16))) # 16進制 轉(zhuǎn) 16進制
except:
input_16hex.insert('end','轉(zhuǎn)換失敗')
input_32baseN.insert('end','轉(zhuǎn)換失敗')
# 十六進制轉(zhuǎn)換
def baseN32():
cls()
try:
input_2bin.insert('end',bin(int(var_.get(), 32))) # 32進制 轉(zhuǎn) 2進制
except:
input_2bin.insert('end','轉(zhuǎn)換失敗')
try:
input_8oct.insert('end',oct(int(var_.get(), 32))) # 32進制 轉(zhuǎn) 8進制
except:
input_8oct.insert('end','轉(zhuǎn)換失敗')
try:
input_10int.insert('end',str(int(var_.get(), 32))) # 32進制 轉(zhuǎn) 10進制
except:
input_10int.insert('end','轉(zhuǎn)換失敗')
try:
input_16hex.insert('end',hex(int(var_.get(), 32))) # 32進制 轉(zhuǎn) 16進制
except:
input_16hex.insert('end','轉(zhuǎn)換失敗')
input_32baseN.insert('end','轉(zhuǎn)換失敗')
按鈕插入
Button(root, text='二進制轉(zhuǎn)換',command=bin2).place(x=13, y=30) Button(root, text='四進制轉(zhuǎn)換',command=bin4).place(x=103, y=30) Button(root, text='八進制轉(zhuǎn)換',command=oct8).place(x=193, y=30) Button(root, text='十進制轉(zhuǎn)換',command=int10).place(x=13, y=60) Button(root, text='十六進制轉(zhuǎn)換',command=hex16).place(x=103, y=60) Button(root, text='三十二進制轉(zhuǎn)',command=baseN32).place(x=193, y=60)
不僅好用,還可以裝逼,可將你的QQ號轉(zhuǎn)為16進制用QQ進行登錄,裝逼再好不過了
看效果:已打包


上方有鏈接可供下載
完整代碼
import tkinter
from tkinter import *
import tkinter as tk
from tkinter.ttk import *
root = Tk()
root.title('賤工坊-進制轉(zhuǎn)換計算') # 程序的標題名稱
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) # 創(chuàng)建畫布
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')
# 二進制轉(zhuǎn)換
def bin2():
cls()
try:
input_2bin.insert('end',bin(int(var_.get(), 2))) # 2進制 轉(zhuǎn) 2進制
except:
input_2bin.insert('end','轉(zhuǎn)換失敗')
try:
input_8oct.insert('end',oct(int(var_.get(), 2))) # 2進制 轉(zhuǎn) 8進制
except:
input_8oct.insert('end','轉(zhuǎn)換失敗')
try:
input_10int.insert('end',str(int(var_.get(), 2))) # 2進制 轉(zhuǎn) 10進制
except:
input_10int.insert('end','轉(zhuǎn)換失敗')
try:
input_16hex.insert('end',hex(int(var_.get(), 2))) # 2進制 轉(zhuǎn) 16進制
except:
input_16hex.insert('end','轉(zhuǎn)換失敗')
input_32baseN.insert('end','轉(zhuǎn)換失敗')
# 四進制轉(zhuǎn)換
def bin4():
cls()
try:
input_2bin.insert('end',bin(int(var_.get(), 4))) # 4進制 轉(zhuǎn) 2進制
except:
input_2bin.insert('end','轉(zhuǎn)換失敗')
try:
input_8oct.insert('end',oct(int(var_.get(), 4))) # 4進制 轉(zhuǎn) 8進制
except:
input_8oct.insert('end','轉(zhuǎn)換失敗')
try:
input_10int.insert('end',str(int(var_.get(), 4))) # 4進制 轉(zhuǎn) 10進制
except:
input_10int.insert('end','轉(zhuǎn)換失敗')
try:
input_16hex.insert('end',hex(int(var_.get(), 4))) # 4進制 轉(zhuǎn) 16進制
except:
input_16hex.insert('end','轉(zhuǎn)換失敗')
input_32baseN.insert('end','轉(zhuǎn)換失敗')
# 八進制轉(zhuǎn)換
def oct8():
cls()
try:
input_2bin.insert('end',bin(int(var_.get(), 8))) # 8進制 轉(zhuǎn) 2進制
except:
input_2bin.insert('end','轉(zhuǎn)換失敗')
try:
input_8oct.insert('end',oct(int(var_.get(), 8))) # 8進制 轉(zhuǎn) 8進制
except:
input_8oct.insert('end','轉(zhuǎn)換失敗')
try:
input_10int.insert('end',str(int(var_.get(), 8))) # 8進制 轉(zhuǎn) 10進制
except:
input_10int.insert('end','轉(zhuǎn)換失敗')
try:
input_16hex.insert('end',hex(int(var_.get(), 8))) # 8進制 轉(zhuǎn) 16進制
except:
input_16hex.insert('end','轉(zhuǎn)換失敗')
input_32baseN.insert('end','轉(zhuǎn)換失敗')
# 十進制轉(zhuǎn)換
def int10():
cls()
try:
input_2bin.insert('end',bin(int(var_.get(), 10))) # 10進制 轉(zhuǎn) 2進制
except:
input_2bin.insert('end','轉(zhuǎn)換失敗')
try:
input_8oct.insert('end',oct(int(var_.get(), 10))) # 10進制 轉(zhuǎn) 8進制
except:
input_8oct.insert('end','轉(zhuǎn)換失敗')
try:
input_10int.insert('end',str(int(var_.get(), 10))) # 10進制 轉(zhuǎn) 10進制
except:
input_10int.insert('end','轉(zhuǎn)換失敗')
try:
input_16hex.insert('end',hex(int(var_.get(), 10))) # 10進制 轉(zhuǎn) 16進制
except:
input_16hex.insert('end','轉(zhuǎn)換失敗')
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進制 轉(zhuǎn) 32進制
except:
input_32baseN.insert('end','轉(zhuǎn)換失敗')
# 十六進制轉(zhuǎn)換
def hex16():
cls()
try:
input_2bin.insert('end',bin(int(var_.get(), 16))) # 16進制 轉(zhuǎn) 2進制
except:
input_2bin.insert('end','轉(zhuǎn)換失敗')
try:
input_8oct.insert('end',oct(int(var_.get(), 16))) # 16進制 轉(zhuǎn) 8進制
except:
input_8oct.insert('end','轉(zhuǎn)換失敗')
try:
input_10int.insert('end',str(int(var_.get(), 16))) # 16進制 轉(zhuǎn) 10進制
except:
input_10int.insert('end','轉(zhuǎn)換失敗')
try:
input_16hex.insert('end',hex(int(var_.get(), 16))) # 16進制 轉(zhuǎn) 16進制
except:
input_16hex.insert('end','轉(zhuǎn)換失敗')
input_32baseN.insert('end','轉(zhuǎn)換失敗')
# 十六進制轉(zhuǎn)換
def baseN32():
cls()
try:
input_2bin.insert('end',bin(int(var_.get(), 32))) # 32進制 轉(zhuǎn) 2進制
except:
input_2bin.insert('end','轉(zhuǎn)換失敗')
try:
input_8oct.insert('end',oct(int(var_.get(), 32))) # 32進制 轉(zhuǎn) 8進制
except:
input_8oct.insert('end','轉(zhuǎn)換失敗')
try:
input_10int.insert('end',str(int(var_.get(), 32))) # 32進制 轉(zhuǎn) 10進制
except:
input_10int.insert('end','轉(zhuǎn)換失敗')
try:
input_16hex.insert('end',hex(int(var_.get(), 32))) # 32進制 轉(zhuǎn) 16進制
except:
input_16hex.insert('end','轉(zhuǎn)換失敗')
input_32baseN.insert('end','轉(zhuǎn)換失敗')
Button(root, text='二進制轉(zhuǎn)換',command=bin2).place(x=13, y=30)
Button(root, text='四進制轉(zhuǎn)換',command=bin4).place(x=103, y=30)
Button(root, text='八進制轉(zhuǎn)換',command=oct8).place(x=193, y=30)
Button(root, text='十進制轉(zhuǎn)換',command=int10).place(x=13, y=60)
Button(root, text='十六進制轉(zhuǎn)換',command=hex16).place(x=103, y=60)
Button(root, text='三十二進制轉(zhuǎn)',command=baseN32).place(x=193, y=60)
root.mainloop()以上就是基于Python制作一個多進制轉(zhuǎn)換工具的詳細內(nèi)容,更多關于Python多進制轉(zhuǎn)換工具的資料請關注腳本之家其它相關文章!
相關文章
解決使用Pycharm導入conda?environment時找不到python.exe
今天在使用conda創(chuàng)建環(huán)境之后,使用pycham發(fā)現(xiàn)找到自己的python環(huán)境但是找不到環(huán)境對應的python.exe,這篇文章主要給大家介紹了關于如何解決使用Pycharm導入conda?environment時找不到python.exe的相關資料,需要的朋友可以參考下2023-10-10
Python中使用Matplotlib進行多圖繪制的詳細教程
Matplotlib是Python中強大的數(shù)據(jù)可視化工具,支持繪制多圖,這篇文章主要介紹了Python中使用Matplotlib進行多圖繪制的相關資料,包括使用subplot、subplots和GridSpec進行布局,并提供了調(diào)整圖表樣式和布局的方法,需要的朋友可以參考下2024-11-11
PyQt6/PySide6 的 QPropertyAnimation 類適用場景分析
QGraphicsView和QGraphicsScene是Qt圖形視圖框架的核心類,用于構建高性能、可交互的2D圖形界面,QGraphicsView 和 QGraphicsScene 為復雜圖形應用提供了強大支持,本文給大家介紹PyQt6/PySide6 的 QPropertyAnimation 類,感興趣的朋友一起看看吧2025-03-03
python matplotlib實現(xiàn)坐標投影的示例代碼
這篇文章主要為大家詳細介紹了python matplotlib實現(xiàn)坐標投影,文中的示例代碼講解詳細,具有一定的參考價值,感興趣的小伙伴可以跟隨小編一起學習一下2024-02-02
Pytorch中Tensor與各種圖像格式的相互轉(zhuǎn)化詳解
這篇文章主要介紹了Pytorch中Tensor與各種圖像格式的相互轉(zhuǎn)化詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-12-12

