Python - один из самых лёгких и популярных языков программирования. С помощью python решается достаточно много проблем - он сможет помочь в почти любой ситуации. Сегодня речь пойдёт о встроенной библиотеке tkinter. С помощью tkinter создаётся уникальный графический интерфейс для приложения на python.
В этой статье:
Загрузка
Синтаксис
Компиляция
Tkinter вы можете скачать на официальном сайте или PyPi.

Загрузка
Для начала работы необходимо загрузить tkinter. Как я уже упоминал выше, он встроенный. Но встроен он начиная с версии Python3.
Загрузка для windows:
pip install tkinter
pip install --update tkinter
либо на всё том же PyPi выбираете tkinter для Windows, macOS или Linux.
Синтаксис
Теперь надо разобраться с синтаксисом tkinter. Сначала импортируем:
from tkinter import *
Теперь наша задача - сделать окно приложения. Для этого выберем название приложения (у меня это My App). Запишем
from tkinter import *
#исходный код
if __name__ == '__main__':
#выполнение кода до загрузки
root = Tk()
root.title('My App') #заголовок
root.mainloop() #отображение окна
пояснение
Сначала мы импортировали tkinter. После него идёт исходный код - виджеты, текст и тд. После if name == 'main' в отступах идёт код, который выполняется до загрузки, тоесть первее чем код в начале (не считая импорт). Сам код, который будет дальше, пишите до. .mainloop() отвечает за отображение окна - оно обязательно должно быть в конце кода. Если вы редактируете 2 окна, нужно ставить не в конец, а в начало кода второго окна (да я "очень хорошо" объясняю)
виджеты и текст
Теперь наша задача - ввести текст. Наше окно пока что пустое. Выглядит оно так:

Чтобы добавить и редактировать текст, нужно использовать виджет Label. Давайте попробуем записать
lbl1 = Label(root, text='Привет')
lbl1.grid(column=0, row=0)

Row отвечает за строку, а column за столбец. Правда, у некоторых могут возникнуть проблемы в том, что вторая строка сдвинута. Для этого изменим grid на place
lbl1.place(x=10,y=10)
Нужно всего лишь указать место по x и y. Для удобства можете задать отдельный класс для управления переменными
class wid_prm():
#класс управления переменными
x = 10
y1 = 10
y2 = 30
y3 = 50
x_y_z = 410
#...
lbl1 = Label(root, text='...')
lbl2 = Label(root, text='...')
#плейсы
lbl1.place(x=x,y=y1)
lbl2.place(x=x,y=y2)
Думаю, тут всё понятно. Местоположение по x нужно использовать одно, если вы хотите использовать один столбец. Думаю, не стоит тратить время, нужно автоматизировать управление переменными x, y
for auto_prm in range(5):
y1 = 10
y1 += 20
y1 -= 10
y1 -= 10
if y1 == 30:
#останавливаем процесс
y1 = 30
else:
y2 = y1 + 20
y3 = y1 + 40
y4 = y1 + 60
y5,y6,y7,y8 = y1 * 2 + (y1 * 4)
y990 = 4
if y990 > 1:
x = 10
else:
x = 5
А для чего это? Это для того, чтобы задать переменные автоматически. Просто скопируйте и вставьте эту часть кода в свой код.
Давайте теперь сделаем шрифт жирным в Label
lbl1 = Label(root,text='...',font=("Times New Roman",21,"bold"))
Вы, наверное, уже поняли, что за шрифт отвечает функция font. "bold" можете убрать, если вы не хотите жирный шрифт текста. 21 - размер текста в пикселях/мм.
Теперь попробуем использовать виджет Button - добавим кнопку
btn1 = Button(root, text='Не нажимай', command=clicked)
btn1.place(x=x_x,y=y1_y)
def clicked():
print('Я же сказал...')
При нажатии на кнопку будет писать определённый текст по команде clicked. Вы можете дать любое название и любое содержимое команды.
Получается, что полный код пока-что выглядит так:
from tkinter import * #импорт
#исходный код
class wid_prm():
#класс управления переменными
x = 10
y1 = 10
y2 = 30
y3 = 50
x_y_z = 410
for auto_prm in range(5):
y1 = 10
y1 += 20
y1 -= 10
y1 -= 10
if y1 == 30:
#останавливаем процесс
y1 = 30
else:
y2 = y1 + 20
y3 = y1 + 40
y4 = y1 + 60
y5,y6,y7,y8 = y1 * 2 + (y1 * 4)
y990 = 4
if y990 > 1:
x = 10
else:
x = 5
class prm_x_y():
x_x = 10
y1_y = 50
lbl1 = Label(root, text='...')
btn1 = Label(root, text='Не нажимай', command=clicked)
def clicked():
print('Я же сказал...')
#плейсы
lbl1.place(x=x,y=y1)
btn1.place(x=x_x,y=y1_y)
if __name__ == '__main__':
root = Tk()
root.title('My App')
root.geometry('400x400')
root.mainloop()
Отлично получилось.
Виджет messagebox
Виджет messagebox позволяет создать отдельное окно с информацией. Давайте попробуем
from tkinter import *
from tkinter import messagebox
messagebox.showinfo('Заголовок', 'текст')

Это довольно круто для дополнительных виджетов.
Я, наверное, с синтаксисом закончу.
Компиляция
Первым делом нужно установить приложение auto-py-to-exe. Вы его можете установить либо с того же PyPi, либо через командную строку:
pip install auto-py-to-exe
pip install --update auto-py-to-exe
Вы скачаете приложение auto-py-to-exe от python. Вот как оно выглядит:

В script location указываете путь к файлу. Вот небольшой пример:
>Path to file:
>\Users\username\Desktop\file.py
Дальше всё просто. Укажите One File, если не хотите, чтобы файлы приложения засоряли ваш пк. Если хотите скрыть консоль (и оставить только окно tkinter), выберите Window Based.
Загрузите иконку приложения в Icon. И наконец-то нажимаете CONVERT .PY TO .EXE. Думаю, с последующим вы сами справитесь - в консоль будет выводиться всякая всячина, и в итоге вы успешно сконвертируете приложение на tkinter.
В этом посте я рассказал базу синтаксиса tkinter. Да, виджетов в ткинтере в разы больше, я могу их подробно расписать в следующей статье если вы захотите.