Tkinter - это привязка Python к набору инструментов Tk GUI . Это стандартный интерфейс Python для набора инструментов Tk GUI, [1] и де-факто стандартный графический интерфейс Python . [2] Tkinter включен в стандартные установки Python для Linux , Microsoft Windows и Mac OS X.
Название Tkinter происходит от интерфейса Tk . Tkinter был написан Фредриком Лундом. [3]
Tkinter - бесплатное программное обеспечение, выпущенное под лицензией Python . [4]
Описание [ править ]
Как и большинство других современных привязок 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. [5] [6] Это позволяет легко тематизировать виджеты Tk, чтобы они выглядели как родная среда рабочего стола, в которой работает приложение, тем самым устраняя давнюю критику Tk (и, следовательно, Tkinter). Некоторые виджеты являются эксклюзивными для ttk, например виджеты combobox, progressbar и treeview.
Рамка [ править ]
В Tkinter виджет Frame - это основная единица организации сложных макетов. Рамка - это прямоугольная область, в которой могут находиться другие виджеты.
Ребенок и родитель [ править ]
Когда создается любой виджет, создаются отношения родитель-потомок. Например, если вы поместите текстовую метку внутри фрейма, фрейм будет родительским для метки.
Минимальное приложение [ править ]
Вот минимальное приложение Python 3 Tkinter с одним виджетом: [7]
#! / usr / bin / env python3from tkinter import * # импортировать все из tkinterroot = Tk () # Создаем корневое (базовое) окноw = Label ( root , text = "Hello world!" ) # Создайте метку со словамиш . pack () # Поместите метку в окнокорень . mainloop () # Запускаем цикл обработки событий
нажмите здесь, чтобы увидеть результат этого кода
Для Python 2 единственное отличие состоит в том, что слово «tkinter» в команде импорта будет начинаться с заглавной буквы « Tkinter ». [8]
Процесс [ править ]
Создание виджета состоит из четырех этапов [9]
- Создавать
- создать его в рамке
- Настроить
- изменить атрибуты виджетов.
- Пакет
- упакуйте его на место, чтобы он стал видимым. Разработчики также могут использовать .grid () (row = int , column = int для определения строк и столбцов для позиционирования виджета, по умолчанию 0) и .place () (relx = int или decimal , rely = int или decimal , задайте координаты в кадре или окне).
- Связывать
- привязать его к функции или событию.
Они часто сжимаются, и их порядок может быть разным.
Простое приложение [ править ]
Используя объектно-ориентированную парадигму в Python, простая программа будет (требуется Tcl версии 8.6, которая по умолчанию не используется Python в MacOS):
#! / usr / bin / env python3импортировать tkinter как tkкласс Application ( тк . Рама ): def __init__ ( self , master = None ): тк . Рамка . __init__ ( я , хозяин ) я . сетка () я . createWidgets () def createWidgets ( self ): я . mondialLabel = tk . Ярлык ( self , text = 'Hello World' ) я . mondialLabel . config ( bg = "# 00ffff" ) я . mondialLabel . сетка () я . quitButton = tk . Кнопка ( self , text = 'Quit' , command = self . Quit ) я . quitButton . сетка ()app = Приложение ()приложение . мастер . title ( 'Образец заявки' )приложение . mainloop ()
- строка 1: директива Hashbang для средства запуска программы, позволяющая выбрать соответствующий исполняемый файл интерпретатора при самостоятельном выполнении. [10]
- строка 2: импортирует модуль tkinter в пространство имен вашей программы, но переименовывает его как tk.
- строка 4: класс приложения наследуется от класса Frame Tkinter.
- строка 6: определяет функцию, которая устанавливает фрейм.
- строка 7: вызывает конструктор родительского класса Frame.
- строка 11: Определение виджетов.
- строка 12: Создает метку с именем MondialLabel с текстом «Hello World».
- строка 13: Устанавливает голубой цвет фона MondialLabel.
- Строка 14: Помещает метку в приложение, чтобы она была видна с помощью метода диспетчера геометрии сетки.
- строка 15: Создает кнопку с надписью «Выйти».
- строка 16: помещает кнопку в приложение. Сетка, размещение и упаковка - все это методы сделать виджет видимым.
- строка 18: Основная программа начинается здесь с создания экземпляра класса Application.
- строка 19: Вызов этого метода устанавливает заголовок окна как «Пример приложения».
- строка 20: запускает основной цикл приложения в ожидании событий мыши и клавиатуры.
Поисковая система Google [ править ]
#! / usr / bin / env python3из tkinter import *корень = Tk ()корень . геометрия ( "500x300" )корень . минимальный размер ( 500 , 300 )корень . макс. размер ( 500 , 300 )корень . title ( "/// ПОИСК ПО GOOGLE ///" )Ярлык ( text = "* GOOGLE *" , font = "lucida 20 bold" , fg = "red" ) . pack ()Ярлык ( текст = "--------------------------------------------- ------- " ) . pack ()def click (): попробуйте : импорт pywhatkit pywhatkit . поиск ( strval . get ()) кроме исключения как e : Сообщение ( корень , «Нет подключения к Интернету» ) . pack () # text varibalestrval = StringVar ()Ярлык ( text = "search here" , font = "billaboard 10 italic" , pady = 5 ) . pack ()Запись ( корень , текстовая переменная = strval ) . pack ()Кнопка ( root , text = "нажмите для подтверждения" , bg = "black" , fg = "white" , command = click ) . пачка ( пады = 20 )Кнопка ( root , text = "QUIT?" , Bg = "sky blue" , fg = "black" , command = exit ) . пачка ( пады = 20 )корень . mainloop ()
- Этот код создает панель прямого поиска для Google.
Ссылки [ править ]
- ^ «Tkinter - интерфейс Python для Tcl / Tk - документация Python v2.6.1» . Проверено 12 марта 2009 .
- ^ "Tkinter - Pythoninfo Wiki" .
- ^ Шипман, Джон В. (12 декабря 2010 г. ), Ссылка на Tkinter: графический интерфейс для Python , Технический компьютерный центр Нью-Мексико , получено 11 января 2012 г.
- ^ "Архивная копия" . Архивировано из оригинала на 2013-11-13 . Проверено 13 ноября 2013 .CS1 maint: заархивированная копия как заголовок ( ссылка )
- ^ "Проблема Python № 2983," Поддержка Ttk для Tkinter " " .
- ^ «Версия субверсии Python 69051, в которой проблема № 2983 решена путем добавления модуля ttk» .
- ^ «Справочник по Tkinter 8.5: графический интерфейс для Python» .
- ^ Флек, Дэн. «Tkinter - GUI на Python» (PDF) . CS112 . Университет Джорджа Мейсона . Проверено 18 августа 2018 .
- ^ Кляйн, Бернд. «Программирование графического интерфейса пользователя с помощью Python: события и привязки» . www.python-course.eu . Проверено 18 августа 2018 .
- ^ «PEP 397 - программа запуска Python для Windows - Python.org» . Проверено 7 июня 2017 .
Внешние ссылки [ править ]
- TkInter , Python вики
- Tkinter GUI Tutorial , охватывает каждый виджет индивидуально.
- Лунд, Фредрик (1999), Введение в Tkinter
- TkDocs : включает не зависящую от языка и специфичную для Python информацию и учебное пособие.
- Ферг, Стивен, Мыслить в Tkinter