Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- """
- Created on Fri Jun 2 06:33:22 2023
- Este código permite cambiar un número decimal ingresado por el usuario
- a otras bases, como a Binario, Octal o Hexadecimal.
- Utiliza tkinter para crear una interfaz gráfica.
- Mejoras:
- Posibilidad de elegir base de entrada, base 10 predeterminada.
- Botón 'Limpiar datos'
- @alpha
- """
- import tkinter as tk
- from tkinter import ttk
- def convert():
- """
- Código que permite el cambio de base a Binario, Octal y Hexadecimal.
- Returns
- -------
- La correspondencia en las bases seleccionadas.
- """
- base = base_combobox.get()
- if base == "10":
- decimal = int(decimal_entry.get())
- binary = bin(decimal)[2:]
- hexadecimal = hex(decimal)[2:]
- octal = oct(decimal)[2:]
- result_text.delete("1.0", tk.END)
- result_text.insert(tk.END, f"Decimal ingresado: {decimal}\n\n")
- result_text.insert(tk.END, "Conversión a otras bases:\n\n")
- result_text.insert(tk.END, f"Binario (0b): {binary}\n")
- result_text.insert(tk.END, f"Octal (0o): {octal}\n")
- result_text.insert(tk.END, f"Hexadecimal (0x): {hexadecimal}")
- elif base == "2":
- binary = decimal_entry.get()
- decimal = int(binary, 2)
- hexadecimal = hex(decimal)[2:]
- octal = oct(decimal)[2:]
- result_text.delete("1.0", tk.END)
- result_text.insert(tk.END, f"Binario ingresado: {binary}\n\n")
- result_text.insert(tk.END, "Conversión a otras bases:\n\n")
- result_text.insert(tk.END, f"Decimal: {decimal}\n")
- result_text.insert(tk.END, f"Octal (0o): {octal}\n")
- result_text.insert(tk.END, f"Hexadecimal (0x): {hexadecimal}")
- elif base == "8":
- octal = decimal_entry.get()
- decimal = int(octal, 8)
- binary = bin(decimal)[2:]
- hexadecimal = hex(decimal)[2:]
- result_text.delete("1.0", tk.END)
- result_text.insert(tk.END, f"Octal ingresado: {octal}\n\n")
- result_text.insert(tk.END, "Conversión a otras bases:\n\n")
- result_text.insert(tk.END, f"Decimal: {decimal}\n")
- result_text.insert(tk.END, f"Binario (0b): {binary}\n")
- result_text.insert(tk.END, f"Hexadecimal (0x): {hexadecimal}")
- elif base == "16":
- hexadecimal = decimal_entry.get()
- decimal = int(hexadecimal, 16)
- binary = bin(decimal)[2:]
- octal = oct(decimal)[2:]
- result_text.delete("1.0", tk.END)
- result_text.insert(tk.END, f"Hexadecimal ingresado: {hexadecimal}\n\n")
- result_text.insert(tk.END, "Conversión a otras bases:\n\n")
- result_text.insert(tk.END, f"Decimal: {decimal}\n")
- result_text.insert(tk.END, f"Binario (0b): {binary}\n")
- result_text.insert(tk.END, f"Octal (0o): {octal}")
- def clear():
- """
- Permite limpiar datos ingresados y respuesta generada.
- """
- decimal_entry.delete(0, tk.END)
- base_combobox.current(0)
- result_text.delete("1.0", tk.END)
- root = tk.Tk()
- root.title("Cambio de Base a Binario, Octal y Hexadecimal")
- mainframe = ttk.Frame(root, padding="3 3 12 12")
- mainframe.grid(column=0, row=0, sticky=(tk.N, tk.W, tk.E, tk.S))
- root.columnconfigure(0, weight=1)
- root.rowconfigure(0, weight=1)
- decimal_label = tk.Label(
- mainframe, text="Ingrese un número: ")
- decimal_label.grid(column=1, row=1, sticky=tk.W)
- decimal_entry = tk.Entry(mainframe)
- decimal_entry.grid(column=2, row=1, sticky=tk.W)
- base_label = tk.Label(mainframe, text="Seleccione Base:")
- base_label.grid(column=1, row=2, sticky=tk.W)
- base_combobox = ttk.Combobox(mainframe, values=["10", "2", "8", "16"])
- base_combobox.current(0)
- base_combobox.grid(column=2, row=2, sticky=tk.W)
- convert_button = tk.Button(mainframe, text="Convertir", command=convert)
- convert_button.grid(column=2, row=3, sticky=tk.W)
- clear_button = tk.Button(mainframe, text="Limpiar datos", command=clear)
- clear_button.grid(column=1, row=6, sticky=tk.W, padx=(10, 0))
- result_text = tk.Text(mainframe, height=10, width=50)
- result_text.grid(column=2, row=4, rowspan=4, sticky=(tk.W, tk.E))
- result_text.tag_configure("title", font=("Courier New", 12, "bold"))
- result_text.insert(tk.END, "Resultado:\n", "title")
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement