使用python和tkinter编写十进制与十六进制转换工具

编写的进制转换工具主要内容就是进行任意十进制转变成24位16进制的数据,并可以选择粘贴

本程序运用tkinter模块进行gui界面交互

tk.messagebox 模块是 tkinter 提供的一个简单的对话框框架,可以用于在 GUI 应用程序中显示消息、错误、警告等。它包括以下类型的对话框

Pyperclip是一个Python库,提供了一个跨平台的接口,允许Python脚本在剪贴板(clipboard)和操作系统间复制和粘贴文本内容。使用Pyperclip库,可以在Python中实现剪贴板相关的功能,例如将文本复制到剪贴板中、从剪贴板中获取文本、检查剪贴板中是否有文本等等。

在验证用户输入时我们需要使用re.search()函数而不是re.match()函数,因为re.match()函数只匹配字符串开头的模式而re.search()函数可以匹配整个字符串。另外我们还需要将错误对话框的标题和消息内容传递给tk.messagebox.showerror()函数。

运行程序,输入任意十进制的数据,点击转换,输出24位十六进制的数据,

如果输入的不是十进制数据将会报错

import tkinter as tk
import tkinter.messagebox as messagebox
import pyperclip
import re

class DraggableWindow:
    def __init__(self, master):
        self.master = master
        master.overrideredirect(True)

        self.header = tk.Frame(master, bg="blue")
        self.header.pack(side=tk.TOP, fill=tk.X)

        self.title = tk.Label(self.header, text="十进制到十六进制转换器")
        self.title.pack(side=tk.LEFT)

        self.close_button = tk.Button(self.header, text="X", command=master.destroy)
        self.close_button.pack(side=tk.RIGHT)

        self.header.bind("<ButtonPress-1>", self.start_drag)
        self.header.bind("<ButtonRelease-1>", self.stop_drag)
        self.header.bind("<B1-Motion>", self.drag)

    def start_drag(self, event):
        self.master._offsetx = event.x
        self.master._offsety = event.y

    def stop_drag(self, event):
        del self.master._offsetx
        del self.master._offsety

    def drag(self, event):
        x = self.master.winfo_x() + event.x - self.master._offsetx
        y = self.master.winfo_y() + event.y - self.master._offsety
        self.master.geometry("+%s+%s" % (x, y))


def convert_to_hex():
    decimal_value = decimal_entry.get().strip()

    if not re.search(r'^\d+$', decimal_value):
        messagebox.showerror('输入无效', '请输入有效的十进制数.')
        return

    hex_value = hex(int(decimal_value))[2:].zfill(24).upper()
    #print(len(hex_value))
    '''
    [2:]如果不想加前边的0x就带上
    '''
    hex_label.config(text=hex_value)

def copy_to_clipboard():
    hex_value = hex_label.cget('text')
    pyperclip.copy(hex_value)

root = tk.Tk()
root.geometry("300x150")

draggable_window = DraggableWindow(root)

decimal_label = tk.Label(root, text="输入十进制值:")
decimal_label.pack()

decimal_entry = tk.Entry(root)
decimal_entry.pack()

convert_button = tk.Button(root, text="转换", command=convert_to_hex)
convert_button.pack()

hex_label = tk.Label(root, text="")
hex_label.pack()

copy_button = tk.Button(root, text="复制到剪贴板", command=copy_to_clipboard)
copy_button.pack()

root.mainloop()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值