Advertisement
JPablos

Cambiar base a Binario, Octal y Hexadecimal. Mejorado. Simple. Python

Jun 7th, 2023 (edited)
770
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.34 KB | Science | 0 0
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3.  
  4. """
  5. Created on Fri Jun  2 06:33:22 2023
  6. Este código permite cambiar un número decimal ingresado por el usuario
  7. a otras bases, como a Binario, Octal o Hexadecimal.
  8.  
  9. Utiliza tkinter para crear una interfaz gráfica.
  10.  
  11. Mejoras:
  12.    
  13.    Posibilidad de elegir base de entrada, base 10 predeterminada.
  14.    Botón 'Limpiar datos'
  15.    
  16. @alpha
  17. """
  18.  
  19. import tkinter as tk
  20. from tkinter import ttk
  21.  
  22.  
  23. def convert():
  24.     """
  25.    Código que permite el cambio de base a Binario, Octal y Hexadecimal.
  26.  
  27.    Returns
  28.    -------
  29.    La correspondencia en las bases seleccionadas.
  30.  
  31.    """
  32.     base = base_combobox.get()
  33.  
  34.     if base == "10":
  35.         decimal = int(decimal_entry.get())
  36.         binary = bin(decimal)[2:]
  37.         hexadecimal = hex(decimal)[2:]
  38.         octal = oct(decimal)[2:]
  39.  
  40.         result_text.delete("1.0", tk.END)
  41.         result_text.insert(tk.END, f"Decimal ingresado: {decimal}\n\n")
  42.         result_text.insert(tk.END, "Conversión a otras bases:\n\n")
  43.         result_text.insert(tk.END, f"Binario (0b):     {binary}\n")
  44.         result_text.insert(tk.END, f"Octal (0o):       {octal}\n")
  45.         result_text.insert(tk.END, f"Hexadecimal (0x): {hexadecimal}")
  46.     elif base == "2":
  47.         binary = decimal_entry.get()
  48.         decimal = int(binary, 2)
  49.         hexadecimal = hex(decimal)[2:]
  50.         octal = oct(decimal)[2:]
  51.  
  52.         result_text.delete("1.0", tk.END)
  53.         result_text.insert(tk.END, f"Binario ingresado: {binary}\n\n")
  54.         result_text.insert(tk.END, "Conversión a otras bases:\n\n")
  55.         result_text.insert(tk.END, f"Decimal:          {decimal}\n")
  56.         result_text.insert(tk.END, f"Octal (0o):       {octal}\n")
  57.         result_text.insert(tk.END, f"Hexadecimal (0x): {hexadecimal}")
  58.     elif base == "8":
  59.         octal = decimal_entry.get()
  60.         decimal = int(octal, 8)
  61.         binary = bin(decimal)[2:]
  62.         hexadecimal = hex(decimal)[2:]
  63.  
  64.         result_text.delete("1.0", tk.END)
  65.         result_text.insert(tk.END, f"Octal ingresado: {octal}\n\n")
  66.         result_text.insert(tk.END, "Conversión a otras bases:\n\n")
  67.         result_text.insert(tk.END, f"Decimal:          {decimal}\n")
  68.         result_text.insert(tk.END, f"Binario (0b):     {binary}\n")
  69.         result_text.insert(tk.END, f"Hexadecimal (0x): {hexadecimal}")
  70.     elif base == "16":
  71.         hexadecimal = decimal_entry.get()
  72.         decimal = int(hexadecimal, 16)
  73.         binary = bin(decimal)[2:]
  74.         octal = oct(decimal)[2:]
  75.  
  76.         result_text.delete("1.0", tk.END)
  77.         result_text.insert(tk.END, f"Hexadecimal ingresado: {hexadecimal}\n\n")
  78.         result_text.insert(tk.END, "Conversión a otras bases:\n\n")
  79.         result_text.insert(tk.END, f"Decimal:          {decimal}\n")
  80.         result_text.insert(tk.END, f"Binario (0b):     {binary}\n")
  81.         result_text.insert(tk.END, f"Octal (0o):       {octal}")
  82.  
  83.  
  84. def clear():
  85.     """
  86.    Permite limpiar datos ingresados y respuesta generada.
  87.  
  88.    """
  89.     decimal_entry.delete(0, tk.END)
  90.     base_combobox.current(0)
  91.     result_text.delete("1.0", tk.END)
  92.  
  93.  
  94. root = tk.Tk()
  95. root.title("Cambio de Base a Binario, Octal y Hexadecimal")
  96.  
  97. mainframe = ttk.Frame(root, padding="3 3 12 12")
  98. mainframe.grid(column=0, row=0, sticky=(tk.N, tk.W, tk.E, tk.S))
  99. root.columnconfigure(0, weight=1)
  100. root.rowconfigure(0, weight=1)
  101.  
  102. decimal_label = tk.Label(
  103.     mainframe, text="Ingrese un número:     ")
  104. decimal_label.grid(column=1, row=1, sticky=tk.W)
  105.  
  106. decimal_entry = tk.Entry(mainframe)
  107. decimal_entry.grid(column=2, row=1, sticky=tk.W)
  108.  
  109. base_label = tk.Label(mainframe, text="Seleccione Base:")
  110. base_label.grid(column=1, row=2, sticky=tk.W)
  111.  
  112. base_combobox = ttk.Combobox(mainframe, values=["10", "2", "8", "16"])
  113. base_combobox.current(0)
  114. base_combobox.grid(column=2, row=2, sticky=tk.W)
  115.  
  116. convert_button = tk.Button(mainframe, text="Convertir", command=convert)
  117. convert_button.grid(column=2, row=3, sticky=tk.W)
  118.  
  119. clear_button = tk.Button(mainframe, text="Limpiar datos", command=clear)
  120. clear_button.grid(column=1, row=6, sticky=tk.W, padx=(10, 0))
  121.  
  122. result_text = tk.Text(mainframe, height=10, width=50)
  123. result_text.grid(column=2, row=4, rowspan=4, sticky=(tk.W, tk.E))
  124. result_text.tag_configure("title", font=("Courier New", 12, "bold"))
  125.  
  126. result_text.insert(tk.END, "Resultado:\n", "title")
  127.  
  128. root.mainloop()
  129.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement