В данной заметке не будет хакерских методик или получения информации из различных источников. Здесь я хочу показать, как, хотя бы на базовом уровне использовать библиотеку Tkinter. Зачем она в Python, наверное, понятно, хотя иногда достаточно и командной строки. Вывод информации в графическом виде бывает удобнее для восприятия информации. Тем более, что с помощью данной библиотеки можно так же выводить различные графики и таблицы. Но об этом, как-нибудь в следующий раз. А пока, давайте посмотрим, как можно использовать его на базовом уровне и создадим простейшее приложение, которое будет считать индекс массы тела, который позволяет оценить, есть ли у человека лишний вес. Результаты можно оценить в специальной таблице, но у врачей слишком много градаций для такой простой программы. Поэтому, используем ее упрощенный вариант.
https://forum.antichat.xyz/attachmen...119790b8dc.png
Для начала надо понять, как рассчитывается индекс массы тела. Для удобства будем называть его ИМТ. Формула расчета такова:
Код:
ИМТ = вес (кг) / рост2 (метры)
Для начала импортируем библиотеку в нашу программу. Делается это с помощью команды:
Python:
Код:
from
tkinter
import
*
Что означает импортирование всех функций из библиотеки, чтобы мы могли использовать их без ограничений в программе. Также необходимо импортировать метод messagebox, который будет использоваться для вывода окна с результатом и сообщения об ошибках, если пользователь не ввел один или несколько показателей.
Python:
Код:
from
tkinter
import
messagebox
Полностью блок импорта будет выглядеть следующим образом:
Python:
Код:
from
tkinter
import
*
from
tkinter
import
messagebox
После этого создадим окно приложения, для чего воспользуемся модулемTk.
Python:
Так же, у приложения есть заголовок, куда мы выведем название нашего приложения:
Python:
Код:
window
.
title
(
"Индекс массы тела (калькулятор)"
)
Для того, чтобы приложение было по центру экрана, необходимо определить ширину и высоту экранной области, также указать ширину и высоту окна приложения, сделать расчеты координат и разместить окно уже по данным расчетам с помощью window.geometry:
Python:
Код:
screen_width
=
window
.
winfo_screenwidth
(
)
screen_height
=
window
.
winfo_screenheight
(
)
window_width
=
400
window_height
=
300
x
=
(
screen_width
//
2
)
-
(
window_width
//
2
)
y
=
(
screen_height
//
2
)
-
(
window_height
//
2
)
window
.
geometry
(
f"{window_width}x{window_height}+{x}+{y}"
)
Так как у нашего приложения будут два поля ввода, надписи к этим полям и кнопка для запуска расчета, необходимо создать виджет Frame для того, чтобы можно было контролировать элементы, а точнее их расположение. Используем pack для того, чтобы можно было позиционировать элементы интерфейса внутри контейнера. И обозначим отступы по горизонтали и вертикали внутри фрейма, с помощью padx и pady.
Python:
Код:
frame
=
Frame
(
window
,
padx
=
10
,
pady
=
10
)
frame
.
pack
(
expand
=
True
)
Добавим поля ввода и надписи к ним. Используем frame в качестве заготовки и укажем текст, который должен быть выведен на экран в надписи.
Python:
Код:
height_imt
=
Label
(
frame
,
text
=
"Введите свой рост (в см) "
)
height_imt
.
grid
(
row
=
3
,
column
=
1
)
weight_imt
=
Label
(
frame
,
text
=
"Введите свой вес (в кг) "
,
)
weight_imt
.
grid
(
row
=
4
,
column
=
1
)
Здесь же используем метод grid, который указывает, что надпись должна располагаться в третьей строке и первом столбце фрейма.
Теперь поместим во фрейм поля ввода, по аналогии с надписями, но будет использовать виджет Entry:
Python:
Код:
height_fr
=
Entry
(
frame
,
)
height_fr
.
grid
(
row
=
3
,
column
=
2
)
weight_fr
=
Entry
(
frame
,
)
weight_fr
.
grid
(
row
=
4
,
column
=
2
,
pady
=
5
)
Следующим шагом будет добавление кнопки, при нажатии на которую будет выполнятся расчет индекса массы тела.
Python:
Код:
cal_Button
=
Button
(
frame
,
text
=
'Рассчитать ИМТ'
,
command
=
calc_imt
)
cal_Button
.
grid
(
row
=
5
,
column
=
2
)
cal_Button
.
grid
(
row
=
5
,
column
=
2
)
Здесь мы видим свойство command, которое указывает, какую функцию использовать в расчетах при нажатии на кнопку. Давайте напишем ее и разместим в начале нашего приложения, сразу за блоком импорта.
Назовем функцию calc_imt(). В нее не передается никаких параметров, но с помощью данной функции мы будем считывать данные из полей ввода, конвертировать их в числа, выполнять расчет и выводить результат на экран.
Для начала проверим, не являются ли поля ввода пустыми, так как в противном случае производить расчеты будет не с чем:
Python:
Код:
if
not
weight_fr
.
get
(
)
or
int
(
weight_fr
.
get
(
)
)
==
0
:
messagebox
.
showinfo
(
'bmi-pythonguides'
,
f'Вы не ввели вес, или он равен нулю'
)
return
elif
not
height_fr
.
get
(
)
or
int
(
height_fr
.
get
(
)
)
==
0
:
messagebox
.
showinfo
(
'bmi-pythonguides'
,
f'Вы не ввели рост, или он равен нулю'
)
return
Также необходимо проверить, не ввел ли пользователь не число, а букву. Сделаем мы это с помощью перехвата исключения ValueError, когда не числовое значение не может быть конвертировано, и выведем соответствующее сообщение.
Затем необходимо считать данные из полей ввода и выполнить расчет. После выполнения расчета проверим с помощью условия if…elif число, которое получилось в результатах расчета, в соответствии с чем выведем сообщение пользователю с нужным сообщением.
Python:
Код:
try
:
kg
=
int
(
weight_fr
.
get
(
)
)
mass
=
int
(
height_fr
.
get
(
)
)
/
100
imt
=
kg
/
(
mass
*
mass
)
imt
=
round
(
imt
,
1
)
if
imt
16
)
and
(
imt
18.5
)
and
(
imt
25
)
and
(
imt
30
)
and
(
imt
35
)
and
(
imt
40
:
messagebox
.
showinfo
(
'bmi-pythonguides'
,
f'Ваш ИМТ{imt}. У вас ожирение третьей степени'
)
except
ValueError
:
messagebox
.
showinfo
(
'bmi-pythonguides'
,
f'Вы ввели не числовое значение!'
)
Добавим последний штрих для того, чтобы наше приложение могло запуститься. Добавим в конец программы строку, которая запускает цикл событий:
Python:
Код:
window
.
mainloop
(
)
Теперь наша программа полностью готова. Давайте запустим ее и проверим результат. Вот что получилось у меня:
https://forum.antichat.xyz/attachmen...833c241455.png
Как видите, в данном контексте использования библиотека Tkinter довольно проста, однако, она позволяет делать и более сложные вещи и оформлять программы оконными интерфейсами.
Ну и теперь полный код программы для расчета индекса массы тела:
Код программы в прикрепленном вложении, а также таблица, по которой делалась интерпретация результата.
Спасибо за внимание! Надеюсь, данная информация будет вам полезна!