python工具2——ui界面的进制转换和固定\x格式

import tkinter as tk


def convert_to_hex():
    input_value = input_entry.get()#从输入框获取输入的值

    try:
        value = int(input_value)
        hex_value = hex(value)[2:].upper()#将整数值转换为纯粹的大写十六进制字符串形式,不包含前缀"0x"。
        output_text.delete(1.0, tk.END)#删除现在输出框的值
        output_text.insert(tk.END, hex_value)#输出框显示刚转换的值
    except ValueError:
        output_text.delete(1.0, tk.END)
        output_text.insert(tk.END, "Invalid input")


def convert_to_custom_format():
    input_value = input_entry.get()

    if len(input_value) % 2 != 0:
        output_text.delete(1.0, tk.END)
        output_text.insert(tk.END, "Input length must be even")
        return

    try:
        formatted_value = "\\x" + "\\x".join([input_value[i:i+2] for i in range(0, len(input_value), 2)])
        output_text.delete(1.0, tk.END)
        output_text.insert(tk.END, formatted_value)
    except ValueError:
        output_text.delete(1.0, tk.END)
        output_text.insert(tk.END, "Invalid input")

def convert_to_decimal():
    input_value = input_entry.get()

    try:
        value = int(input_value, 16)
        output_text.delete(1.0, tk.END)
        output_text.insert(tk.END, str(value))
    except ValueError:
        output_text.delete(1.0, tk.END)
        output_text.insert(tk.END, "Invalid input")


# 创建主窗口
window = tk.Tk()
window.title("Conversion Tool")
# 设置主窗口大小
window.geometry("400x200")
# 创建输入框标签和输入框
input_label = tk.Label(window, text="输入框:")
input_label.pack()

input_entry = tk.Entry(window)
input_entry.pack(pady=5)

# 创建输出框标签和输出框
output_label = tk.Label(window, text="输出框:")
output_label.pack()

output_text = tk.Text(window, height=1.5, width=25)#可以设置输出框的大小
output_text.pack(pady=5)

# 创建按钮
hex_button = tk.Button(window, text="10转16", command=convert_to_hex)
hex_button.pack(side=tk.RIGHT, padx=30, pady=5)#对按钮的位置进行布局
#使用了side参数来设置按钮的对齐方式,并使用了padx和pady参数来设置按钮之间的间距

custom_format_button = tk.Button(window, text="转换为\\x格式", command=convert_to_custom_format)
custom_format_button.pack(side=tk.RIGHT, padx=30, pady=5)

decimal_button = tk.Button(window, text="16转10", command=convert_to_decimal)
decimal_button.pack(side=tk.RIGHT, padx=30, pady=5)

# 运行主循环
window.mainloop()

下面对 formatted_value = "\\x" + "\\x".join([input_value[i:i+2] for i in range(0, len(input_value), 2)])进行解释:

这代码是用来将输入的数按照指定的格式进行转换的。下面逐步解释这行代码的含义:
input_value[i:i+2] for i in range(0, len(input_value), 2):这是一个列表推导式,
它将输入的值 input_value 按照每两个字符为一组进行分割,并生成一个列表。例如,对于输入值
"123456",该列表推导式将生成 ['12', '34', '56']。
#"\x".join([...]):这是用来连接列
表中的元素,并以 "\x" 作为连接符。"\x" 是用来表示十六进制转义字符的方式之一。通过这个操作,
我们可以将列表中的元素连接起来,例如,['12', '34', '56'] 通过 "\x".join(...) 操作将
会变成 "12\x34\x56"。formatted_value = "\\x" + "\\x".join(...):将前缀 "\x" 加
到连接后的字符串前面,以满足所需的格式要求。最终,formatted_value 变量将包含转换后的结果字
符串,例如,"\x12\x34\x56"。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值