Создание простого приложения Tkinter в Python
В этом уроке вы узнаете, как разработать простое приложение Tkinter в Python, которое преобразует температуру из градусов Фаренгейта в градусы Цельсия.
Пример создания приложения «Преобразователь температуры»
Ниже показано приложение «Конвертер температуры», которое нам предстоит создать. Приложение преобразует температуру из градусов Фаренгейта в градусы Цельсия:
По сути, приложение имеет метку, запись и кнопку. Когда вы вводите температуру в градусах Фаренгейта и нажимаете кнопку «Convert», оно преобразует значение в текстовом поле из градусов Фаренгейта в градусы Цельсия.
Если ввести значение, которое невозможно преобразовать в число, программа выдаст ошибку.
Чтобы создать это приложение, выполните следующие действия.
- Сначала импортируйте модуль tkinter, подмодуль ttk и функцию showerror из tkinter.messagebox:
import tkinter as tk from tkinter import ttk from tkinter.messagebox import showerror
- Во-вторых, создайте корневое окно и настройте его параметры:
# root window root = tk.Tk() root.title('Temperature Converter') root.geometry('300x70') root.resizable(False, False)
- В-третьих, определите функцию, которая преобразует температуру из градусов Фаренгейта в градусы Цельсия:
def fahrenheit_to_celsius(f): """ Convert fahrenheit to celsius """ return(f - 32) * 5/9
- В-четвертых, создайте фрейм, содержащий поля формы:
frame = ttk.Frame(root)
- В-пятых, определите параметр, который будет использоваться всеми полями формы:
options = {'padx': 5, 'pady': 5}
- Шестое, определите метку, запись и кнопку. Метка покажет результат, как только вы нажмете кнопку Convert:
# temperature label temperature_label = ttk.Label(frame, text='Fahrenheit') temperature_label.grid(column=0, row=0, sticky='W', **options) # temperature entry temperature_entry = ttk.Entry(frame, textvariable=temperature) temperature_entry.grid(column=1, row=0, **options) temperature_entry.focus() # convert button convert_button = ttk.Button(frame, text='Convert') convert_button.grid(column=2, row=0, sticky='W', **options) convert_button.configure(command=convert_button_clicked) # result label result_label = ttk.Label(frame) result_label.grid(row=1, columnspan=3, **options)
- Наконец, поместите рамку в корневое окно и запустите метод mainloop():
frame.grid(padx=10, pady=10) root.mainloop()
Соберите все вместе.
import tkinter as tk from tkinter import ttk from tkinter.messagebox import showerror # root window root = tk.Tk() root.title('Temperature Converter') root.geometry('300x70') root.resizable(False, False) def fahrenheit_to_celsius(f): """ Convert fahrenheit to celsius """ return(f - 32) * 5/9 # frame frame = ttk.Frame(root) # field options options = {'padx': 5, 'pady': 5} # temperature label temperature_label = ttk.Label(frame, text='Fahrenheit') temperature_label.grid(column=0, row=0, sticky='W', **options) # temperature entry temperature = tk.StringVar() temperature_entry = ttk.Entry(frame, textvariable=temperature) temperature_entry.grid(column=1, row=0, **options) temperature_entry.focus() # convert button def convert_button_clicked(): """ Handle convert button click event """ try: f = float(temperature.get()) c = fahrenheit_to_celsius(f) result = f'{f} Fahrenheit = {c:.2f} Celsius' result_label.config(text=result) except ValueError as error: showerror(title='Error', message=error) convert_button = ttk.Button(frame, text='Convert') convert_button.grid(column=2, row=0, sticky='W', **options) convert_button.configure(command=convert_button_clicked) # result label result_label = ttk.Label(frame) result_label.grid(row=1, columnspan=3, **options) # add padding to the frame and show it frame.grid(padx=10, pady=10) # start the app root.mainloop()