Python进制转换GUI界面设计-tkinter(简单易上手)

或许大家已经较为熟练掌握Python基础了,跃跃欲试地想编程一个属于自己的应用,但又无从下手。这次带来的.py完全可以满足萌新的要求,如果向打包成.exe,这里推荐一位B站up主的视频供大家参考.py转.exe(学不会随便嫖)_哔哩哔哩_bilibili

目录

1.简要介绍

2.分步详解

2.1转化函数(二进制转化函数)

2.2界面设计

3.最终代码

4.结语

1.简要介绍

程序功能很简单,可根据输入的数值与精度得到对应进制的转化数字。主要使用的是python自带的tkinter库内的函数。

2.分步详解

2.1转化函数(二进制转化函数)

#Num为输入数字,Time控制输出位数
def bin_Translate(Num, Time):
    #得到Num的整数部分
    Num_Int = int(Num)
    #创建空列表临时存放值
    x = ""
    #创建空列表存放最终值
    finnal = ""
    #Num整数部分为0
    if Num_Int == 0:
        x = x + "0"
    #进入循环,除2取余
    while Num_Int > 0:
        x = x + str(Num_Int % 2)
        Num_Int = int(Num_Int / 2)
    #逆向将x列表复制到finnal列表中
    total = len(x)
    while total >= 1:
        finnal = finnal + x[total - 1]
        total = total - 1
    #去除Num小数部分
    Num_Ap = Num - int(Num)
    #控制循环因子
    time = 1
    if Num_Ap != 0:
        #添加小数点
        finnal = finnal + '.'
        #进入循环,乘2取整
        while time <= Time:
            Num_Ap = Num_Ap * 2
            if Num_Ap >= 1:
                finnal = finnal + '1'
                Num_Ap = Num_Ap - 1
            else:
                finnal = finnal + '0'
            time = time + 1
    #返回finnal列表
    return finnal

2.2界面设计

root = Tk()
#设置窗口标题
root.title('进制转换器')
#设置窗口大小
root.geometry('400x300')
root.resizable(False, False)
var = StringVar()
#设置标签
label_1 = Label(root, text="请输入待转换的数值(可输入小数)")
#设置输入框
entry_1 = Entry(root)

label_2 = Label(root, text="请输入转化后的进制(二进制与八进制可选)")
entry_2 = Entry(root)

label_3 = Label(root, text="请输入转化后的位数(对整数无效)")
entry_3 = Entry(root)
#设置输出
label = Label(root, textvariable=var, width=20, justify='left')

#定义输出函数
def show():
    #取出输入框值
    E1 = float(entry_1.get())
    E2 = int(entry_2.get())
    E3 = int(entry_3.get())
    if E2 == 2:
        var.set(bin_Translate(E1, E3))
    elif E2 == 8:
        var.set(oct_Translate(E1, E3))
    else:
        var.set('进制错误')

#设置输出按钮
button = Button(root, text='转换', command=show)


label_1.pack()
entry_1.pack()
label_2.pack()
entry_2.pack()
label_3.pack()
entry_3.pack()

button.pack()
label.pack()
#设置推出按钮
Button(root, text="退出程序", command=root.quit).pack()
root.mainloop()

3.最终代码

from tkinter import *

#Num为输入数字,Time控制输出位数
def bin_Translate(Num, Time):
    #得到Num的整数部分
    Num_Int = int(Num)
    #创建空列表临时存放值
    x = ""
    #创建空列表存放最终值
    finnal = ""
    #Num整数部分为0
    if Num_Int == 0:
        x = x + "0"
    #进入循环,除2取余
    while Num_Int > 0:
        x = x + str(Num_Int % 2)
        Num_Int = int(Num_Int / 2)
    #逆向将x列表复制到finnal列表中
    total = len(x)
    while total >= 1:
        finnal = finnal + x[total - 1]
        total = total - 1
    #去除Num小数部分
    Num_Ap = Num - int(Num)
    #控制循环因子
    time = 1
    if Num_Ap != 0:
        #添加小数点
        finnal = finnal + '.'
        #进入循环,乘2取整
        while time <= Time:
            Num_Ap = Num_Ap * 2
            if Num_Ap >= 1:
                finnal = finnal + '1'
                Num_Ap = Num_Ap - 1
            else:
                finnal = finnal + '0'
            time = time + 1
    #返回finnal列表
    return finnal


def oct_Translate(Num, Time):
    Num_Int = int(Num)
    x = ""
    finnal = ""
    if Num_Int == 0:
        x = x + "0"
    while Num_Int > 0:
        x = x + str(Num_Int % 8)
        Num_Int = int(Num_Int / 8)
    total = len(x)
    while total >= 1:
        finnal = finnal + x[total - 1]
        total = total - 1
    Num_Ap = Num - int(Num)
    time = 1
    if Num_Ap != 0:
        finnal = finnal + '.'
        while time <= Time:
            Num_Ap = Num_Ap * 8
            if Num_Ap >= 1:
                finnal = finnal + str(int(Num_Ap))
                Num_Ap = Num_Ap - int(Num_Ap)
            else:
                finnal = finnal + '0'
            time = time + 1

    return finnal

root = Tk()
#设置窗口标题
root.title('进制转换器')
#设置窗口大小
root.geometry('400x300')
root.resizable(False, False)
var = StringVar()
#设置标签
label_1 = Label(root, text="请输入待转换的数值(可输入小数)")
#设置输入框
entry_1 = Entry(root)

label_2 = Label(root, text="请输入转化后的进制(二进制与八进制可选)")
entry_2 = Entry(root)

label_3 = Label(root, text="请输入转化后的位数(对整数无效)")
entry_3 = Entry(root)
#设置输出
label = Label(root, textvariable=var, width=20, justify='left')

#定义输出函数
def show():
    #取出输入框值
    E1 = float(entry_1.get())
    E2 = int(entry_2.get())
    E3 = int(entry_3.get())
    if E2 == 2:
        var.set(bin_Translate(E1, E3))
    elif E2 == 8:
        var.set(oct_Translate(E1, E3))
    else:
        var.set('进制错误')

#设置输出按钮
button = Button(root, text='转换', command=show)


label_1.pack()
entry_1.pack()
label_2.pack()
entry_2.pack()
label_3.pack()
entry_3.pack()

button.pack()
label.pack()
#设置推出按钮
Button(root, text="退出程序", command=root.quit).pack()
root.mainloop()

4.结语

若有疑问,欢迎向博主私信、评论。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ByeByeWorld02

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值