Калькулятор Систем счисления, python
у меня уже есть калькулятор систем счисления, но в него необходимо дополнить путь перевода. Те, когда клиент задает число, его систему счисления и сс, в которую хочет перевести число, на экране вместе с результатом, должно быть решения. Помогите пожалуйста написать этот код. Мой код калькулятора ниже
from tkinter import *
def convert_number():
number = entry_number.get()
from_base = int(entry_from_base.get())
to_base = int(entry_to_base.get())
try:
if not number or not entry_from_base.get() or not entry_to_base.get():
raise ValueError("Поля не могут \n быть пустыми")
if from_base < 2 or from_base > 36 or to_base < 2 or to_base > 36:
raise ValueError("Система счисления \n должна быть от 2 до 36")
decimal_number = int(number, from_base)
converted_number = ""
while decimal_number > 0:
remainder = decimal_number % to_base
if remainder < 10:
converted_number = str(remainder) + converted_number
else:
converted_number = chr(remainder + 55) + converted_number
decimal_number = decimal_number // to_base
label_result.config(text="Результат: " + converted_number)
except ValueError as e:
label_result.config(text="Ошибка: проверьте \n правильность \n введения данных" )
def validate_input(input_str):
valid_chars = set('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ')
return all(char in valid_chars for char in input_str)
window1 = Tk()
window1.title("Приложение CtaviaNS")
window1.geometry('420x500')
window1.resizable(False, False)
window1.iconbitmap(default="64.ico")
window1.config(bg='#a6caf0')
k = Label(window1, text="Перевод чисел \n в различные Системы Счисления")
k.pack(pady=0)
k.config(bg="#a6caf0", font=("W3$iP", 16))
l = Label(window1, text="Введите ваше число и \n его систему счисления:", font=("W3$iP", 13))
l.place(x=0, y=80)
l.config(bg="#a6caf0")
entry_number = Entry(window1, validate="key", width=25, font=("W3$iP", 10))
entry_number['validatecommand'] = (entry_number.register(validate_input), '%P')
entry_number.place(x=13, y=140)
entry_from_base = Entry(window1, validate="key", width=5, font=("W3$iP", 10))
entry_from_base['validatecommand'] = (entry_from_base.register(validate_input), '%P')
entry_from_base.place(x=240, y=140)
l = Label(window1, text="Введите систему счисления,", font=("W3$iP", 13))
l.place(x=10, y=170)
l.config(bg="#a6caf0")
l = Label(window1, text="в которую Вы хотите перевести число:", font=("W3$iP", 13))
l.place(x=10, y=195)
l.config(bg="#a6caf0")
entry_to_base = Entry(window1, validate="key", width=5, font=("W3$iP", 10))
entry_to_base['validatecommand'] = (entry_to_base.register(validate_input), '%P')
entry_to_base.place(x=13, y=240)
l = Label(window1, text="система счисления", font=("W3$iP", 13))
l.place(x=52, y=238)
l.config(bg="#a6caf0")
button_convert = Button(window1, text="Конвертировать", command=convert_number)
button_convert.place(x=13, y=280)
button_convert.config(fg="#000000", bg="#a7a6f0", font=("W3$iP", 15), activebackground='#f0a6ef', activeforeground="#000000")
label_result = Label(window1, text="Результат:", font=("W3$iP", 17))
label_result.place(x=10, y=350)
label_result.config(bg="#a6caf0")
window1.mainloop()