编写的进制转换工具主要内容就是进行任意十进制转变成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位十六进制的数据,
![](https://img-blog.csdnimg.cn/img_convert/50536f8ff9b4503d3b3fa3f0f0767f47.png)
![](https://img-blog.csdnimg.cn/img_convert/f9f32b6f331db9ac821460c0028abac3.png)
如果输入的不是十进制数据将会报错
![](https://img-blog.csdnimg.cn/img_convert/b4d5ef410e211fab88c14b52ae06d715.png)
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()