Ткинтер - Tkinter

Tkinter - это привязка Python к набору инструментов Tk GUI . Это стандартный интерфейс Python для набора инструментов Tk GUI и де-факто стандартный графический интерфейс Python . Tkinter входит в стандартные установки Python для GNU / Linux , Microsoft Windows и macOS .

Название Tkinter происходит от интерфейса Tk . Tkinter был написан Фредриком Лундом.

Tkinter - бесплатное программное обеспечение, выпущенное под лицензией Python .

Описание

Как и большинство других современных привязок Tk, Tkinter реализован как оболочка Python вокруг полного интерпретатора Tcl, встроенного в интерпретатор Python . Вызовы Tkinter переводятся в команды Tcl, которые передаются этому встроенному интерпретатору, что позволяет смешивать Python и Tcl в одном приложении.

Доступно несколько популярных альтернативных библиотек с графическим интерфейсом, например wxPython , PyQt , PySide , Pygame , Pyglet и PyGTK .

Некоторые определения

Окно

Этот термин имеет разные значения в разных контекстах, но в целом он относится к прямоугольной области где-то на экране дисплея пользователя.

Окно верхнего уровня

Окно, которое действует как дочернее по отношению к главному окну. Он будет оформлен стандартной рамкой и элементами управления для рабочего стола менеджера . Его можно перемещать по рабочему столу и, как правило, изменять размер.

Виджет

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

  • Основные виджеты: контейнеры: рамка, рамка метки, верхний уровень, окно с панорамированием. Кнопки: button, radiobutton, checkbutton (checkbox), and menubutton. Текстовые виджеты: метка, сообщение, текст. Виджеты ввода: масштаб, полоса прокрутки, список, ползунок, счетчик, ввод (однострочный), опционное меню, текст (многострочный) и холст (векторная и пиксельная графика).
  • Tkinter предоставляет три модуля, которые позволяют отображать всплывающие диалоговые окна: tk.messagebox (диалоговые окна с подтверждением, информацией, предупреждениями и ошибками), tk.filedialog (диалоги выбора одного файла, нескольких файлов и каталогов) и tk.colorchooser (средство выбора цвета). .
  • Python 2.7 и Python 3.1 включают в себя "тематическую Tk" ("ttk") функциональность Tk 8.5. Это позволяет легко тематизировать виджеты Tk, чтобы они выглядели как родная среда рабочего стола, в которой работает приложение, тем самым устраняя давнюю критику Tk (и, следовательно, Tkinter). Некоторые виджеты являются эксклюзивными для ttk, например, виджеты combobox, progressbar и treeview.

Рамка

В Tkinter виджет Frame - это основная единица организации сложных макетов. Рамка - это прямоугольная область, в которой могут находиться другие виджеты.

Ребенок и родитель

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

Минимальное приложение

Вот минимальное приложение Python 3 Tkinter с одним виджетом:

#!/usr/bin/env python3
from tkinter import *
root = Tk() 							# Create the root (base) window 
w = Label(root, text="Hello, world!") 	# Create a label with words
w.pack() 								# Put the label into the window
root.mainloop() 						# Start the event loop

Для Python 2 единственное отличие состоит в том, что слово «tkinter» в команде импорта будет начинаться с заглавной буквы « Tkinter ».

Процесс

Создание виджета состоит из четырех этапов

Создавать
создать его в рамке
Настроить
изменить атрибуты виджетов.
Пакет
упакуйте его на место, чтобы он стал видимым. Разработчики также могут использовать .grid () (row = int , column = int для определения строк и столбцов для позиционирования виджета, по умолчанию 0) и .place () (relx = int или decimal , rely = int или decimal , задайте координаты в кадре или окне).
Связывать
привязать его к функции или событию.

Они часто сжимаются, и их порядок может быть разным.

Простое приложение

Используя объектно-ориентированную парадигму в Python, простая программа будет (требуется Tcl версии 8.6, которая по умолчанию не используется Python в MacOS):

#!/usr/bin/env python3

import tkinter as tk


class Application(tk.Frame):

    def __init__(self, master=None):
        tk.Frame.__init__(self, master)
        self.grid()
        self.createWidgets()

    def createWidgets(self):
        self.mondialLabel = tk.Label(self, text='Hello World')
        self.mondialLabel.config(bg="#00ffff")
        self.mondialLabel.grid()
        self.quitButton = tk.Button(self, text='Quit', command=self.quit)
        self.quitButton.grid()


app = Application()
app.master.title('Sample application')
app.mainloop()
  • строка 1: директива Hashbang для средства запуска программы, позволяющая выбрать соответствующий исполняемый файл интерпретатора при самостоятельном выполнении.
  • строка 3: импортирует модуль tkinter в пространство имен вашей программы, но переименовывает его как tk.
  • строка 6: класс приложения наследуется от класса Frame Tkinter.
  • строка 8: определяет функцию, которая устанавливает фрейм.
  • строка 9: вызывает конструктор родительского класса Frame.
  • строка 13: Определение виджетов.
  • строка 14: Создает метку с именем MondialLabel с текстом «Hello World».
  • строка 15: Устанавливает голубой цвет фона MondialLabel.
  • строка 16: Помещает метку в приложение, чтобы она была видна с помощью метода диспетчера геометрии сетки.
  • строка 17: Создает кнопку с надписью «Выйти».
  • строка 18: помещает кнопку в приложение. Сетка, размещение и упаковка - все это методы сделать виджет видимым.
  • строка 21: Основная программа начинается здесь с создания экземпляра класса Application.
  • строка 22: Вызов этого метода устанавливает заголовок окна как «Пример приложения».
  • строка 23: запускает основной цикл приложения, ожидая событий мыши и клавиатуры.

использованная литература

внешние ссылки