Brief overview of Python Tkinter: Creating GUI Applications

Posted by


Python Tkinter является стандартным набором виджетов для создания графического пользовательского интерфейса (GUI) в Python. Tkinter предоставляет различные виджеты, такие как кнопки, меню, текстовые поля и многое другое, которые могут быть использованы для создания интерактивных приложений.

В этом уроке мы рассмотрим основы создания GUI приложений с помощью Python Tkinter.

Установка Tkinter

Tkinter входит в стандартную библиотеку Python, поэтому нет необходимости устанавливать дополнительные пакеты. Однако, убедитесь, что у вас установлена версия Python 3.x, так как Tkinter для Python 2.x отличается.

Создание окна

Для начала создадим окно при помощи Tkinter. Вот простой пример:

import tkinter as tk

root = tk.Tk() # создаем главное окно
root.title("Мое первое GUI приложение") # устанавливаем заголовок окна
root.mainloop() # запускаем главный цикл обработки событий

Этот код создаст простое пустое окно с заголовком "Мое первое GUI приложение".

Добавление виджетов

Теперь давайте добавим кнопку в окно:

import tkinter as tk

def click():
    print("Кнопка нажата!")

root = tk.Tk()
root.title("Мое первое GUI приложение")

button = tk.Button(root, text="Нажми меня", command=click)
button.pack()

root.mainloop()

В этом примере мы создаем кнопку с надписью "Нажми меня" и привязываем к ней функцию click, которая будет вызываться при нажатии на кнопку.

Размещение виджетов

Tkinter предоставляет различные методы для размещения виджетов в окне. Один из таких методов – метод pack(), который автоматически располагает виджеты в окне.

button.pack() # размещение кнопки в окне

Вместо метода pack() можно также использовать метод grid() для размещения виджетов в сетке.

Создание макета

Чтобы более гибко управлять размещением виджетов, можно использовать фреймы. Фреймы – это контейнеры, в которые можно добавлять другие виджеты.

frame = tk.Frame(root)
frame.pack()

button1 = tk.Button(frame, text="Кнопка 1")
button1.pack(side=tk.LEFT)

button2 = tk.Button(frame, text="Кнопка 2")
button2.pack(side=tk.RIGHT)

Добавление меню

Tkinter также позволяет создавать меню для приложений. Вот пример добавления меню в приложение:

menu = tk.Menu(root)
root.config(menu=menu)

file_menu = tk.Menu(menu)
menu.add_cascade(label="Файл", menu=file_menu)
file_menu.add_command(label="Открыть")
file_menu.add_command(label="Сохранить")
file_menu.add_separator()
file_menu.add_command(label="Выход", command=root.quit)

Заключение

Это был краткий обзор создания GUI приложений с помощью Python Tkinter. Tkinter предоставляет множество возможностей для создания красивых и функциональных пользовательских интерфейсов. Изучите документацию Tkinter для более подробной информации и экспериментируйте с созданием собственных GUI приложений.

0 0 votes
Article Rating
24 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@PseudoDev
1 month ago

А как вы считаете, стоит делать подробный курс по Python Tkinter? 🤔

Upd: кста, хочется сказать пару слов о противоречивом слове в начале ролика (писать не могу, т.к. Ютуб удалит комментарий). Ни один нормальный Украинец не будет обижаться на подобное, в частности так же, как и Русский на какой нибудь аналог обзывательства. Никакого негатива, честное слов 🤡

@ashimov1970
1 month ago

Чей Крым?

@mslq
1 month ago

Как его установить на Python12 под линукс? В пакете его нет, пытался установить, не получалось.

@JelilKullyyew
1 month ago

Здравствуйте я пытался скачать speedtest-cli но не получается даёт ошибку можеюите подсказать что делать

@HOpER-ey9fc
1 month ago

Я который вместо интернет теста получил калькулятор😊

@Astrophysic76
1 month ago

вот код – from tkinter import *

from speedtest import Speedtest

def test():

download = Speedtest().download()

upload = Speedtest().upload()

download_speed = round(download / (10**6),2)

upload_speed = round(upload / (10**6),2)

download_label.config(text="скорость загрузки:n-" + str(download_speed)+ мб/сек)

upload_label.config(text="скорость отдачи:n" + str(upload_speed) + мб/сек)

root = Tk()

root.title("WiFi test")

root.geometry("300×400")

button = Button(root, text="нажмите чтобы начать", font=40, command=test)

button.pack(side=BOTTOM, pady=40)

download_label = Label(root, text="скорость загрузки:n-", font=35)

download_label.pack()

upload_label = Label(root, text="скорость отдачи:n-", font=35)

upload_label.pack()

root.mainloop()

@ulanulan7739
1 month ago

Класс

@Vladimir.Serebryakov
1 month ago

Конечно надо, есть желание большое научиться программировать, раньше в 90 писал на Фоксбейс)))

@Filiot10
1 month ago

CПС за помощь. Ток в конце мне выдаёт ошибку и отправляет к программе в которой нет ошибок.

@raufali4660
1 month ago

Вопрос от чайника: как сделать чтобы при печатании появлялись варианты выбора команд, н-р root. –и выбор следующего слова-в выпадающем списке. Спасибо!!!

@maksimvolkov3546
1 month ago

12 ()
13
14 root.title("SpeedTest")
15 root.geometry("300×400")
16
17 button = Button(root, text="Нажать чтобы начать", font=40, command=test) 18 button.pack(side=BOTTOM, pady=40)
19
20 download_label = Label(root, text="Скорость Загрузки:n-",
font=35)
21 download_label.pack(pady=(50, 0))
22 upload_label = Label(root, text="Скорость Отдачи:n-", font=35)
23 upload_label.pack(pady=(10, 0))
24
под

@dertfin1
1 month ago

Pad – это аналог padding из html?

@RusterSummerCar
1 month ago

Что за прога?

@ЕВГЕНИЙКассихин-ю1ф
1 month ago

Ты убрал низкие чистоты из звука ???? Зачем? Или это я оглох

@LAV_fhree
1 month ago

Как называется этот инструмент с перушком

@Anim_rev
1 month ago

не узнает config что делать?

@vasilejosu3431
1 month ago

У меня не распознает =Tk()

@SirSatorik
1 month ago

Привет! у меня почему то не работает, код проверил, окно открывается, я жду 10-30 секунд но всё равно он не отоброжает скорость интернета, я не знаю почему так происходит, в консоли ошибок нет, надеюсь что скоро ты ответишь

@sergeyyakovets4210
1 month ago

спсибо за видео. намучался много но так и не получилось установить модуль Tkinter чтобы ВСЦ увидел его, помогите плиз

@wav3lonnights
1 month ago

Я же не один посмотрел все мемы из рекламы?