Учебник По Tcl На Русском Языке
Курс по библиотеке Tkinter языка Python — Викиверситет. Этой библиотеке посвящено мало внимания, и найти в рунете курс, книгу или FAQ по ней довольно- таки сложно. Стоит отметить, что здесь отражены только основы этой библиотеки, и надеюсь, что более опытные люди дополнят эту статью. Что такое Tkinter?
Эта библиотека является интерфейсом к популярному языку программирования и инструменту создания графических приложений tcl/tk. Tkinter, как и tcl/tk, является кроссплатформенной библиотекой и может быть использована в большинстве распространённых операционных систем (Windows, Linux, Mac OS X и др.). Так как Tkinter является достаточно прозрачным интерфейсом к tcl/tk, то основным источником информации для неё являются man- страницы tcl/tk. Эти страницы имеются в любой Unix- системе (в разделе n или 3tk). Также они доступны онлайн на сайте http: //tcl.
Основные: Начиная с версии python- 3. PEP 8 в tkinter (с маленькой буквы). Импортируется она как и любая другая библиотека: # для версии python 2. Tkinter# для версии python 3. Tkinterimport*# для версии python 3. В Tkinter визуальные контроллы называются виджетами (widget, от англ.
При создании объекта этого класса запускается интерпретатор tcl/tk и создаётся базовое окно приложения. Tkinter является событийно- ориентированной библиотекой. В приложениях такого типа имеется главный цикл обработки событий. В Tkinter такой цикл запускается методом mainloop.
Имеются и универсальные скрипт-языки (Perl, Python, Ruby, Tcl). Контекстный интерпретатор REBOL; Интерпретатор Ruby; Язык Tcl. На русском языке : компьютерные языки написания скриптов. Программировать на языке Tcl (название произносится как 'тикл'). Так же этот сайт может использоваться как справочное пособие. Почему именно Tcl?, спросите вы.
Рекомендации. Давайте теперь посмотрим, основную структуру программы Tcl, так что это будет легко для вас, чтобы понять основные строительные блоки языка Tcl.
Для явного выхода из интерпретатора и завершения цикла обработки событий используется метод quit. Таким образом минимальное приложение на Tkinter будет таким: fromtkinterimport*root=Tk()root. В приложении можно использовать несколько интерпретаторов tcl/tk. Так как после вызова метода mainloop дальнейшие команды python исполняться не будут до выхода из цикла обработки событий, необходимо метод mainloop всех интерпретаторов кроме последнего осуществлять в фоновом режиме. Пример запуска двух интерпретаторов: fromtkinterimport*root. Tk()root. 2=Tk()root. При использовании двух и более интерпретаторов необходимо следить, чтобы объекты, созданные в одном интерпретаторе, использовались только в нём.
Например, изображение, созданное в первом интерпретаторе, может быть использовано много раз в этом же интерпретаторе, но не может быть использовано в других интерпретаторах. Необходимость в запуске нескольких интерпретаторов в одном приложении возникает крайне редко.
Для создания дополнительного окна приложения в большинстве случаев достаточно виджета Toplevel. Общее для всех виджетов. Опишем их, перед тем как перейти к рассмотрению конкретных виджетов. Виджеты создаются вызовом конструктора соответствующего класса. Первый аргумент (как правило неименованный, но можно использовать имя master) это родительский виджет, в который будет упакован (помещён) наш виджет.
Родительский виджет можно не указывать, в таком случае будет использовано главное окно приложения. Далее следуют именованные аргументы, конфигурирующие виджет.
Это может быть используемый шрифт (font=..), цвет виджета (bg=..), команда, выполняющаяся при активации виджета (command=..) и т. Полный список всех аргументов можно посмотреть в man options и man- странице соответствующего виджета (например man button, см. Пример кода: from. Tkinterimport*defbutton. В случае использования Python v 3 код немного изменится.
Для этого используется метод configure (или его синоним config). Также можно использовать квадратные скобки (widget. Пример, программа выводит текущее время, после клика по кнопке: from. Tkinterimport*importtimedefbutton. Он предназначен для получения информации о конфигурации виджета. Здесь как и в случае с configure можно использовать квадратные скобки (value = widget.
Пример, после клика на кнопку программа показывает цвет кнопки и меняет его на другой: from. Tkinterimport*fromrandomimportrandomdefbutton. Стоит отметить, что если необходимо только на время спрятать какой- либо виджет, то лучше пользоваться упаковщиком grid и методом grid.
Виджет, захвативший поток, будет получать все события окна или приложения. В этом случае все события на дисплее будут передаваться этому виджету. Следует пользоваться очень осторожно, т.
Возможные значения: None, . Виджет, имеющий фокус, получает все события с клавиатуры. Используйте осторожно, поскольку это может раздражать пользователей. Порядок следования определяется последовательностью упаковки виджетов. Вернуть нормальное поведение достаточно сложно.
С помощью этих методов вы можете отложить выполнение какого- нибудь кода на определённое время. Возвращает идентификатор, который может быть использован в after. Эта функция будет выполнена после завершения всех отложенных операций (после того, как будут обработаны все события). Возвращает идентификатор, который может быть использован в after. Их выполнение вызывает обработку отложенных задач. Это приводит к прорисовке всех виджетов, расчёту их расположения и т.
Обычно эта функция используется если были внесены изменения в состояние приложения, и вы хотите, чтобы эти изменения были отображены на экране немедленно, не дожидаясь завершения сценария. Обычно эта функция используется во время . В качестве аргументов принимают соответственно строку и путь к файлу. Данные функции полезны при использовании дополнительных модулей, написанных на tcl.
Пример: from. Tkinterimport*root=Tk()root. Обычно используется для создания многооконных программ, а также для диалоговых окон. Методы виджетаtitle - заголовок окнаoverrideredirect - указание оконному менеджеру игнорировать это окно.
Аргументом является True или False. В случае, если аргумент не указан - получаем текущее значение. Если аргумент равен True, то такое окно будет показано оконным менеджером без обрамления (без заголовка и бордюра). Может быть использовано, например, для создания splashscreen при старте программы. Для того, чтобы снова показать его, надо использовать метод deiconify. Методы принимают два аргумента - ширина и высота окна.
Если аргументы не указаны - возвращают текущее значение. Может возвращать следующие значения: normal (нормальное состояние), icon (показано в виде иконки), iconic (свёрнуто), withdrawn (не показано), zoomed (развёрнуто на полный экран, только для Windows и Mac OS X)resizable - может ли пользователь изменять размер окна. Принимает два аргумента - возможность изменения размера по горизонтали и по вертикали.
Без аргументов возвращает текущее значение. Размер или координаты могут быть опущены (geometry(. Будет сворачиваться вместе с указанным окном. Без аргументов возвращает текущее значение. События могут называться WM. Методы могут принимать один необязательный аргумент: над/под каким окном разместить текущее. Пример кода: from.
Tkinterimport*root=Tk()button. Chess Killer 1 31 на этой странице. Button(root,text='ok',width=2. Разберем этот небольшой код.
За создание, собственно, окна, отвечает класс Tk(), и первым делом нужно создать экземпляр этого класса. Этот экземпляр принято называть root, хотя вы можете назвать его как угодно. Далее создаётся кнопка, при этом мы указываем её свойства (начинать нужно с указания окна, в примере - root). Здесь перечислены некоторые из них: text - какой текст будет отображён на кнопке (в примере - ок)width,height - соответственно, ширина и длина кнопки. Далее, нашу кнопку необходимо разместить на окне. Для этого, в Tkinter используются специальные упаковщики( pack(), place(), grid() ).
Поподробнее об упаковщиках узнаем позже. Пока, чтобы разместить несколько виджетов на окне, будем применять самый простой упаковщик pack(). В конце программы, нужно использовать функцию mainloop (см. Имеет те же свойства, что и перечисленные свойства кнопки. Entry - это виджет, позволяющий пользователю ввести одну строку текста. Имеет дополнительное свойство bd (сокращённо от borderwidth), позволяющее регулировать ширину границы. Text - это виджет, который позволяет пользователю ввести любое количество текста.
Имеет дополнительное свойство wrap, отвечающее за перенос (чтобы, например, переносить по словам, нужно использовать значение WORD). Например: from. Tkinterimport*root=Tk()text.
Text(root,height=7,width=7,font='Arial 1.