import tkinter as tk from tkinter import ttk from tkinter import messagebox # 进制转换函数 def convert_base(): try: # 获取输入值和进制 input_num = input_entry.get().strip() input_base = int(input_base_combobox.get()) output_base = int(output_base_combobox.get()) # 将输入数从指定进制转换为十进制 decimal_num = int(input_num, input_base) # 将十进制数转换为目标进制 if output_base == 10: result = str(decimal_num) else: result = '' digits = "0123456789ABCDEF" while decimal_num > 0: result = digits[decimal_num % output_base] + result decimal_num //= output_base if result == '': result = '0' # 显示转换结果 output_entry.config(state=tk.NORMAL) output_entry.delete(0, tk.END) output_entry.insert(0, result) output_entry.config(state=tk.DISABLED) except ValueError: messagebox.showerror("错误", "输入的数字格式不正确或超出进制范围") # 创建主窗口 root = tk.Tk() root.title("进制转换器") root.geometry("400x250") # 输入框标签和输入框 tk.Label(root, text="输入数字:").pack(pady=5) input_entry = tk.Entry(root, width=30) input_entry.pack(pady=5) # 输入进制选择 tk.Label(root, text="输入数字的进制:").pack(pady=5) input_base_combobox = ttk.Combobox(root, values=[str(i) for i in range(2, 17)], state="readonly", width=5) input_base_combobox.current(0) # 默认选择2进制 input_base_combobox.pack(pady=5) # 输出进制选择 tk.Label(root, text="输出数字的进制:").pack(pady=5) output_base_combobox = ttk.Combobox(root, values=[str(i) for i in range(2, 17)], state="readonly", width=5) output_base_combobox.current(0) # 默认选择2进制 output_base_combobox.pack(pady=5) # 转换按钮 convert_button = tk.Button(root, text="转换", command=convert_base) convert_button.pack(pady=10) # 输出框标签和输出框 tk.Label(root, text="转换结果:").pack(pady=5) output_entry = tk.Entry(root, width=30, state=tk.DISABLED) output_entry.pack(pady=5) # 运行主循环 root.mainloop()