免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1794 | 回复: 1
打印 上一主题 下一主题

进制转换 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-05-28 22:07 |只看该作者 |倒序浏览
  1. #-*- coding:utf8 -*-
  2. from Tkinter import *
  3. import tkMessageBox

  4. root =Tk()
  5. root.title('进制转换')
  6. inputbits=IntVar()
  7. inputnum=StringVar()
  8. output2text=StringVar()
  9. output10text=StringVar()
  10. output8text=StringVar()
  11. output16text=StringVar()
  12. def cmd():
  13.     bits=inputbits.get()
  14.     num=inputnum.get()
  15.     try:
  16.         if bits==2:
  17.             num=int(num,2)
  18.         elif bits==3:
  19.             num=int(num)
  20.         else:
  21.             num=int(num,16)
  22.         output2text.set(bin(num).lstrip('0b'))
  23.         output8text.set(oct(num).rstrip('L').lstrip('0'))
  24.         output10text.set(str(num).rstrip('L'))
  25.         output16text.set(hex(num).rstrip('L').lstrip('0x').upper())
  26.     except ValueError:
  27.             tkMessageBox.showwarning('警告','输入有误,请核对!')
  28. inputbits.set(3)   
  29. def crrb(text,value,column):
  30.     Radiobutton(root,text=text,variable=inputbits,value=value,command=cmd).grid(row=1,column=column)
  31. crrb('二进制',2,0)
  32. crrb('十进制',3,1)
  33. crrb('十六进制',1,2)   
  34. inputnum.set('0001')
  35. Entry(root,textvariable=inputnum,width=60).grid(row=1,column=3)
  36. Button(root,text='转 换',command=cmd,padx=10,pady=4,height=4,width=10).grid(row=3,column=0,rowspan=4,columnspan=2)
  37. def crout(text,row,textvariable):
  38.     Label(root,text=text).grid(row=row,column=2)
  39.     Entry(root,textvariable=textvariable,width=60).grid(row=row,column=3,padx=5)
  40. crout('二进制',3,output2text)
  41. crout('八进制',4,output8text)
  42. crout('十进制',5,output10text)
  43. crout('十六进制',6,output16text)
  44. root.mainloop()


复制代码

论坛徽章:
0
2 [报告]
发表于 2011-05-28 22:17 |只看该作者
[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 成计算器了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP