Создание простого приложения 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()
Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *