Создание конвертера температуры в Python с помощью Tkinter

Добро пожаловать в очередной урок из серии Tkinter, в котором мы узнаем, как создать конвертер температуры с помощью библиотеки Tkinter. Tkinter - это универсальная и полезная библиотека, которую мы можем использовать для создания GUI-приложений. В этой статье мы обсудим ее установку и использование для создания конвертера из Цельсия в Фаренгейт и из Фаренгейта в Цельсий. Итак, давайте начнём.
Базовые понятия о температуре
Температура измеряет жару или холод. По шкале Цельсия точки замерзания и кипения воды равны 0°C и 100°C соответственно. По шкале Фаренгейта эти точки равны 32°F и 212°F. Шкала Цельсия широко используется во всем мире, в то время как шкала Фаренгейта распространена в Соединенных Штатах. Чтобы перевести градусы Цельсия в градусы Фаренгейта, используйте уравнение 1, а чтобы перевести градусы Фаренгейта в градусы Цельсия, используйте уравнение 2. Понимание этих шкал жизненно важно для решения повседневных задач, таких как приготовление пищи и прогнозирование погоды, а также для научных исследований.
Уравнение 1:

Уравнение 2:


Создание конвертера Цельсия в Фаренгейт
Теперь, когда мы знаем, как преобразовывать температуру, давайте попробуем внедрить логику в наш код на Python, чтобы сделать из него приложение. Давайте посмотрим, как пошагово создать конвертер из градусов Цельсия в градусы Фаренгейта.
Шаг 1: Импорт Tkinter
Tkinter - это библиотека Python, используемая для создания графических пользовательских интерфейсов. Если у вас нет предустановленной Tkinter, вы можете установить её на свою систему, выполнив следующую команду:
pip install tk
Для начала импортируем библиотеку Tkinter под именем "tk
" для удобства использования.
import tkinter as tk
Шаг 2: Определение функции преобразования
Сначала мы создадим функцию celsius_to_fahrenheit()
для преобразования значений Цельсия в значения Фаренгейта. Эта функция будет получать значение Цельсия из виджета ввода, затем конвертировать его в Фаренгейт по формуле (Цельсий × 9/5) + 32 и, наконец, выводить результат.
def celsius_to_fahrenheit():
try:
celsius = float(celsius_entry.get())
fahrenheit = (celsius * 9/5) + 32
fahrenheit_label.config(text=f"{fahrenheit:.2f}°F", fg="#F1F1F2")
except ValueError:
fahrenheit_label.config(text="")
Шаг 3: Создание главного окна
Затем мы инициализируем главное (корневое) окно приложения и установим для него заголовок "Конвертер Цельсия в Фаренгейт". Мы также настроим цвет фона.
root = tk.Tk()
root.title("Celsius to Fahrenheit Converter")
root.configure(background="#A1D6E2")
Шаг 4: Создание ярлыка и виджета ввода
После этого мы создадим ярлык, предлагающий пользователю ввести температуру в градусах Цельсия. Кроме того, мы создадим виджет ввода, чтобы пользователь мог ввести значение по Цельсию.
input_label = tk.Label(root, text="Enter the temperature in Celsius",
bg="#1995AD", fg="#F1F1F2", font=("Arial", 14, "bold"))
input_label.grid(row=0, column=0, padx=10, pady=10)
celsius_entry = tk.Entry(root)
celsius_entry.grid(row=1, column=0, padx=10, pady=10)
Шаг 5: Создание кнопки конвертации
Теперь мы создадим кнопку с надписью "Конвертация", при нажатии на которую будет запускаться функция celsius_to_fahrenheit()
.
convert_button = tk.Button(root, text="Convert", command=celsius_to_fahrenheit,
bg="#1995AD", fg="#F1F1F2", font=("Arial", 14, "bold"))
convert_button.grid(row=2, column=0, padx=10, pady=10)
Шаг 6: Создание ярлыка для вывода
Затем мы создадим метку для отображения преобразованной температуры в градусах Фаренгейта.
output_label = tk.Label(root, text="Temperature in Fahrenheit", bg="#1995AD", fg="#F1F1F2", font=("Arial", 14, "bold"))
output_label.grid(row=3, column=0, padx=10, pady=10)
fahrenheit_label = tk.Label(root, text="", bg="#1995AD", fg="#F1F1F2", font=("Arial", 14, "bold"))
fahrenheit_label.grid(row=4, column=0, padx=10, pady=10)
Шаг 7: Запуск цикла событий
Наконец, мы запустим цикл событий Tkinter для обработки взаимодействия с пользователем и обеспечения отзывчивости графического интерфейса.
root.mainloop()
Полный код
import tkinter as tk
def celsius_to_fahrenheit():
try:
celsius = float(celsius_entry.get())
fahrenheit = (celsius * 9/5) + 32
fahrenheit_label.config(text=f"{fahrenheit:.2f}°F", fg="#F1F1F2")
except ValueError:
fahrenheit_label.config(text="")
# Create the main window
root = tk.Tk()
root.title("Celsius to Fahrenheit Converter")
root.configure(background="#A1D6E2")
# Create labels and entry widgets
input_label = tk.Label(root, text="Enter the temperature in Celsius",
bg="#1995AD", fg="#F1F1F2", font=("Arial", 14, "bold"))
input_label.grid(row=0, column=0, padx=10, pady=10)
celsius_entry = tk.Entry(root)
celsius_entry.grid(row=1, column=0, padx=10, pady=10)
convert_button = tk.Button(root, text="Convert", command=celsius_to_fahrenheit,
bg="#1995AD", fg="#F1F1F2", font=("Arial", 14, "bold"))
convert_button.grid(row=2, column=0, padx=10, pady=10)
output_label = tk.Label(root, text="Temperature in Fahrenheit", bg="#1995AD", fg="#F1F1F2", font=("Arial", 14, "bold"))
output_label.grid(row=3, column=0, padx=10, pady=10)
fahrenheit_label = tk.Label(root, text="", bg="#1995AD", fg="#F1F1F2", font=("Arial", 14, "bold"))
fahrenheit_label.grid(row=4, column=0, padx=10, pady=10)
# Start the main event loop
root.mainloop()
Выходные данные
При запуске мы увидим окно приложения с секцией ввода, которая принимает температуру в градусах Цельсия, и кнопкой "Конвертация".



Мы вводим значение "32", и при нажатии на кнопку преобразования температура преобразуется в градусы Фаренгейта, и на экране появляется значение "89.60".
Создание конвертера Фаренгейта в Цельсий
Видите, создать конвертер Цельсия в Фаренгейт было довольно просто. Аналогичным образом мы можем создать конвертер Фаренгейта в Цельсий, шаги будут одинаковыми в большинстве случаев, единственное изменение - определение функции. Внимательно изучите приведенный код.
def fahrenheit_to_celsius():
try:
fahrenheit = float(fahrenheit_entry.get())
celsius = (fahrenheit - 32) * 5/9
celsius_label.config(text=f"{celsius:.2f}°C", fg="#330000")
except ValueError:
celsius_label.config(text="")
Этот код определяет функцию fahrenheit_to_celsius()
для преобразования Фаренгейта в Цельсий. Она получает значение Фаренгейта из виджета ввода, преобразует его в Цельсий по формуле и отображает результат. Если введенное значение не является правильным числом, оно очищает отображаемое значение Цельсия.
В код было внесено ещё несколько изменений, которые не требуют пояснений. Вот полный код.
Полный код
import tkinter as tk
def fahrenheit_to_celsius():
try:
fahrenheit = float(fahrenheit_entry.get())
celsius = (fahrenheit - 32) * 5/9
celsius_label.config(text=f"{celsius:.2f}°C", fg="#330000")
except ValueError:
celsius_label.config(text="")
# Create the main window
root = tk.Tk()
root.title("Fahrenheit to Celsius Converter")
root.configure(background="#990011")
# Define the Arial font
font_style = ("Arial", 14, "bold")
# Create labels and entry widgets
input_label = tk.Label(root, text="Enter the temperature in Fahrenheit", bg="#FCF6F5", fg="#330000", font=font_style)
input_label.grid(row=0, column=0, padx=10, pady=10)
fahrenheit_entry = tk.Entry(root)
fahrenheit_entry.grid(row=1, column=0, padx=10, pady=10)
convert_button = tk.Button(root, text="Convert", command=fahrenheit_to_celsius,
bg="#FCF6F5", fg="#330000", font=font_style)
convert_button.grid(row=2, column=0, padx=10, pady=10)
output_label = tk.Label(root, text="Temperature in Celsius", bg="#FCF6F5", fg="#330000", font=font_style)
output_label.grid(row=3, column=0, padx=10, pady=10)
celsius_label = tk.Label(root, text="", bg="#FCF6F5", fg="#330000", font=font_style)
celsius_label.grid(row=4, column=0, padx=10, pady=10)
# Start the main event loop
root.mainloop()
Выходные данные
При выполнении приведенного выше кода мы получим результат, как показано ниже:



Заключение
В этом уроке по Tkinter мы сделали приложение для преобразования температуры. Tkinter, библиотека Python, помогает создавать пользовательские интерфейсы. Мы начнем с установки Tkinter, а затем сосредоточимся на конвертации градусов Цельсия в градусы Фаренгейта с помощью простого кода. Шаг за шагом мы создаем конвертер, в котором пользователи вводят температуру по Цельсию и получают эквиваленты по Фаренгейту. По аналогичным принципам мы также создадим конвертер из Фаренгейта в Цельсий. С помощью этого простого проекта данное руководство поможет новичкам создать практичные графические интерфейсы Python для повседневного использования.