Ткинтер - 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: запускает основной цикл приложения, ожидая событий мыши и клавиатуры.
использованная литература
внешние ссылки
- TkInter , Python вики
- Tkinter GUI Tutorial , охватывает каждый виджет индивидуально.
- TkDocs : включает не зависящую от языка и специфичную для Python информацию и учебное пособие.
- Ферг, Стивен, мышление в Tkinter