# -*- coding: utf-8 -*-
from tkinter import *
import tkinter.messagebox as box
class main:
base = [str(x) for x in range(10)] + [chr(x) for x in range(ord('A'), ord('A') + 6)]
def __init__(self):
root = Tk()
root.title("进制转换-****-QQ****")
self.center_window(root,500,200)
root.resizable(width=FALSE, height=FALSE) #宽不可变, 高不可变,默认为True
label1 = Label(root, text="来源进制:").place(x=20,y=20,width=80,height=30)
self.f = IntVar()
f2Btn = Radiobutton(root,text="二进制",variable=self.f,value = 2).place(x=100,y=20,width=80,height=30)
f10Btn = Radiobutton(root, text="十进制", variable=self.f, value=10).place(x=200,y=20,width=80,height=30)
f16Btn = Radiobutton(root, text="十六进制", variable=self.f, value=16).place(x=300,y=20,width=80,height=30)
label2 = Label(root, text="转换进制:").place(x=20,y=50,width=80,height=30)
self.t = IntVar()
t2Btn = Radiobutton(root, text="二进制", variable=self.t, value=2).place(x=100,y=50,width=80,height=30)
t10Btn = Radiobutton(root, text="十进制", variable=self.t, value=10).place(x=200,y=50,width=80,height=30)
t16Btn = Radiobutton(root, text="十六进制", variable=self.t, value=16).place(x=300,y=50,width=80,height=30)
btGetName = Button(root, text="转换", command=self.processButton).place(x=400,y=24,width=80,height=50)
label3 = Label(root, text="来源数据:").place(x=20, y=80, width=80, height=30)
self.fData = StringVar();
entry1 = Entry(textvariable = self.fData).place(x=120, y=85, width=360, height=20)
label4 = Label(root, text="转换数据:").place(x=20, y=110, width=80, height=30)
self.tData = StringVar();
entry2 = Entry(textvariable=self.tData).place(x=120, y=115, width=360, height=20)
root.mainloop()
def processButton(self):
f = self.f.get()
t = self.t.get()
fData = self.fData.get()
if(f==0 or t == 0):
box.showerror("错误","请选择按钮")
elif(f == t):
box.showerror("错误", "不能选择相同的进制")
if(fData == ""):
box.showerror("错误", "请填写数据")
if(f == 2 and t == 10):
self.tData.set(str(int(fData, 2)))
if(f == 2 and t == 16):
self.tData.set(main.dec2hex(str(int(fData, 2))))
if(f == 10 and t == 2):
self.tData.set(main.dec2bin(fData))
if (f == 10 and t == 16):
self.tData.set(main.dec2hex(fData))
if(f == 16 and t == 2):
self.tData.set(main.dec2bin(str(int(fData.upper(), 16))))
if(f == 16 and t == 10):
self.tData.set(str(int(fData.upper(), 16)))
def center_window(self,root, width, height):
screenwidth = root.winfo_screenwidth()
screenheight = root.winfo_screenheight()
size = '%dx%d+%d+%d' % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)
root.geometry(size)
# 十进制转十六进制:
def dec2hex(decNum):
num = int(decNum)
mid = []
while True:
if num == 0: break
num, rem = divmod(num, 16)
mid.append(main.base[rem])
return ''.join([str(x) for x in mid[::-1]])
# 十进制转二进制: bin()
def dec2bin(decNum):
num = int(decNum)
mid = []
while True:
if num == 0: break
num, rem = divmod(num, 2)
mid.append(main.base[rem])
return ''.join([str(x) for x in mid[::-1]])
main()
使用 pyinstaller main.py -w -F打包可执行文件,-w不弹出命令窗口 -F 打成一个文件
python tkinter 进制转换工具
最新推荐文章于 2024-01-08 22:39:46 发布