Flask接口签名sign原理与实例代码浅析
401
2022-08-27
【案例】进制转换程序(界面)(进制转换的程序)
Content
1.1 案例介绍1.2 准备工作2.1 界面模块2.2 算法核心
2.2.1 二进制2.2.2 十进制2.2.3 十六进制
3. 代码汇总[^1]4. 运行截图5. 后记
1.1 案例介绍
由于网络原理以及单片机课程的需要,我要处理许多关于二进制、十进制和十六进制之间转换的问题,所以编写了一个小软件来替我完成这些工作。
用户只需要输入数字,选择相对应的进制,然后按下转换按钮,即可在输出框中看到其余另外两个进制的转换结果。
# 输入 1011# 进制选择Binary# 输出Decimal: 11Hexadecimal: B
1.2 准备工作
Python3.x
2.1 界面模块
界面包括了四个部分内容:接受用户输入、用户选择进制、输出转换结果、开启按钮。
采用 tkinter 中的 grid 布局模式。
2.2 算法核心
这是算法的核心,包括了:
二进制 -> 十进制、十六进制。十进制 -> 二进制、十六进制。十六进制 -> 二进制、十进制。
上面三种算法的转换语句。
2.2.1 二进制
2 -> 10:str(int(number, 2))
2 -> 16:''.join(list(str(hex(int(number, 2))).upper())[2:])
2.2.2 十进制
10 -> 2:''.join(list(bin(int(number)))[2:])
10 -> 16:''.join(list(hex(int(number)).upper())[2:])
2.2.3 十六进制
16 -> 2:''.join(list(bin(int(str(int(number.upper(), 16)))))[2:])
16 -> 10:str(int(number.upper(), 16))
3. 代码汇总1
# encoding: utf-8# !/usr/bin/python"""@Filename:进制转换@Author: jiaming@Create date:2018/12/21下午 07:28@description: 提供二进制、十进制、十六进制之间的转换,使用 grid 布局方式@Update date:@File url: """import tkinter as tk# 提示框,下拉菜单from tkinter import messagebox, ttk# 界面对象的基本参数设置root = tk.Tk()root.title("进制转换")root.geometry('520x200+250+250')# 设置界面是否可以随意拉伸root.resizable(False, False)radix = '' # 存储输入数字的进制(Binary)number = '' # 存储需要转化的数字text = '' # 输出框文本内容def draw(): """ 绘制界面 包括有输入框, 输出框, 下拉菜单, 图片 :return: """ # 输入数字 tk.Label(root, text='输入数字', font=('Times', 16)).grid(row=0, column=0, sticky=tk.W + tk.E) # 进制选择 tk.Label(root, text='进制选择', font=('Times', 16)).grid(row=0, column=1, sticky=tk.W + tk.E) # 输入框设置 inputWord = tk.StringVar() tk.Entry(root, width=50, textvariable=inputWord).grid(row=1, column=0, sticky=tk.E) # 转换结果 tk.Label(root, text='转换结果', font=('Times', 16)).grid(row=2, column=0, sticky=tk.W + tk.E) # 输出框设置 outputWord = tk.Text(root, width=50, height=5, font=('Arial', 10)) outputWord.grid(row=3, column=0, sticky=tk.E) # 下拉菜单设置 # 创建下拉菜单 # 将下拉列表设置成为只读模式 cmb = ttk.Combobox(root, width=20, state='readonly') cmb.grid(row=1, column=1, sticky=tk.E) # 设置下拉菜单中的值 cmb['value'] = ('Binary', 'Decimal', 'Hexadecimal') def buttonCommand(): """ 实现按钮功能 :return: """ global radix, number # 获取下拉菜单中的值 if cmb.get() == '': return None # 获取下拉菜单中内容的首字母 elif cmb.get()[0] == 'B': # 保存到变量中 radix = 'Binary' # print('Binary') elif cmb.get()[0] == 'D': radix = 'Decimal' # print('Decimal') elif cmb.get()[0] == 'H': radix = 'Hexadecimal' # print('Hexadecimal') # 将用户输入的数字保存到变量中 number = inputWord.get() # 清空输出框中内容 outputWord.delete(1.0, tk.END) # 调用算法核心函数 text = calculate() # 将结果插入到输出框中 outputWord.insert(1.0, text) # 设置Button btn = tk.Button(root, text="转换", command=buttonCommand, # 绑定按钮事件(指向函数即可) width=20, height=2, activebackground='gray', fg='black') btn.grid(row=2, column=1, sticky=tk.N + tk.E + tk.W)def calculate(): """ 计算进制转化结果 Decimal Hexadecimal Binary :return: 其余两个进制的转换结果 """ if radix == 'Decimal': try: text = 'Binary: ' + ''.join(list(bin(int(number)))[2:]) text += '\n' text += 'Hexadecimal: ' + ''.join(list(hex(int(number)).upper())[2:]) return text except (ValueError): messagebox.showerror('消息框', '错误!') elif radix == 'Binary': try: text = 'Decimal: ' + str(int(number, 2)) text += '\n' text += 'Hexadecimal: ' + ''.join( list(str(hex(int(number, 2))).upper())[2:]) return text except (ValueError): messagebox.showerror('消息框', '错误!') elif radix == 'Hexadecimal': try: text = 'Binary: ' + ''.join( list(bin(int(str(int(number.upper(), 16)))))[2:]) text += '\n' text += 'Decimal: ' + str(int(number.upper(), 16)) return text except (ValueError): messagebox.showerror('消息框', '错误!')if __name__ == "__main__": draw() root.mainloop()
4. 运行截图
5. 后记
以上就是关于进制转换案例的全部内容,希望你们喜欢,如果有什么问题,欢迎私信哦。如果比较受大家欢迎的话,下期咱们介绍关于如何将这个案例打包的话题。
欢迎关注我的我的知乎专栏,里面有更多关于 python 的精彩知识分享哦~
本软件受到著作权保护。↩︎
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~