HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Этичный хакинг или пентестинг
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 06.08.2025, 14:54
Johan Van
Постоянный
Регистрация: 19.05.2022
Сообщений: 368
С нами: 2100239

Репутация: 0
По умолчанию

В данной заметке не будет хакерских методик или получения информации из различных источников. Здесь я хочу показать, как, хотя бы на базовом уровне использовать библиотеку Tkinter. Зачем она в Python, наверное, понятно, хотя иногда достаточно и командной строки. Вывод информации в графическом виде бывает удобнее для восприятия информации. Тем более, что с помощью данной библиотеки можно так же выводить различные графики и таблицы. Но об этом, как-нибудь в следующий раз. А пока, давайте посмотрим, как можно использовать его на базовом уровне и создадим простейшее приложение, которое будет считать индекс массы тела, который позволяет оценить, есть ли у человека лишний вес. Результаты можно оценить в специальной таблице, но у врачей слишком много градаций для такой простой программы. Поэтому, используем ее упрощенный вариант.



Для начала надо понять, как рассчитывается индекс массы тела. Для удобства будем называть его ИМТ. Формула расчета такова:

Код:
ИМТ = вес (кг) / рост2 (метры)
Для начала импортируем библиотеку в нашу программу. Делается это с помощью команды:

Python:


Код:
from
tkinter
import
*
Что означает импортирование всех функций из библиотеки, чтобы мы могли использовать их без ограничений в программе. Также необходимо импортировать метод messagebox, который будет использоваться для вывода окна с результатом и сообщения об ошибках, если пользователь не ввел один или несколько показателей.

Python:


Код:
from
tkinter
import
messagebox
Полностью блок импорта будет выглядеть следующим образом:

Python:


Код:
from
tkinter
import
*
from
tkinter
import
messagebox
После этого создадим окно приложения, для чего воспользуемся модулемTk.

Python:


Код:
window
=
Tk
(
)
Так же, у приложения есть заголовок, куда мы выведем название нашего приложения:

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
(
)
Теперь наша программа полностью готова. Давайте запустим ее и проверим результат. Вот что получилось у меня:



Как видите, в данном контексте использования библиотека Tkinter довольно проста, однако, она позволяет делать и более сложные вещи и оформлять программы оконными интерфейсами.

Ну и теперь полный код программы для расчета индекса массы тела:

Код программы в прикрепленном вложении, а также таблица, по которой делалась интерпретация результата.

Спасибо за внимание! Надеюсь, данная информация будет вам полезна!
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.