- 论坛徽章:
- 0
|
[code][#-*- coding:utf8 -*-
from Tkinter import *
import tkMessageBox
root =Tk()
root.title('进制转换')
inputbits=IntVar()
inputnum=StringVar()
output2text=StringVar()
output10text=StringVar()
output8text=StringVar()
output16text=StringVar()
def cmd():
bits=inputbits.get()
try:
num=eval(inputnum.get())
if bits==2:
num=int(num,2)
elif bits==3:
num=int(num)
else:
num=int(num,16)
output2text.set(bin(num).lstrip('0b'))
output8text.set(oct(num).rstrip('L').lstrip('0'))
output10text.set(str(num).rstrip('L'))
output16text.set(hex(num).rstrip('L').lstrip('0x').upper())
except ValueError:
tkMessageBox.showwarning('警告','输入有误,请核对!')
inputbits.set(3)
def crrb(text,value,column):
Radiobutton(root,text=text,variable=inputbits,value=value,command=cmd).grid(row=1,column=column)
crrb('二进制',2,0)
crrb('十进制',3,1)
crrb('十六进制',1,2)
inputnum.set('0001')
Entry(root,textvariable=inputnum,width=60).grid(row=1,column=3)
Button(root,text='转 换',command=cmd,padx=10,pady=4,height=4,width=10).grid(row=3,column=0,rowspan=4,columnspan=2)
def crout(text,row,textvariable):
Label(root,text=text).grid(row=row,column=2)
Entry(root,textvariable=textvariable,width=60).grid(row=row,column=3,padx=5)
crout('二进制',3,output2text)
crout('八进制',4,output8text)
crout('十进制',5,output10text)
crout('十六进制',6,output16text)
root.mainloop()
/code]
加了 eval 成计算器了 |
|