Интернет ttk скачать и установить бесплатно

Обновлено: 21.11.2024

Я пытаюсь импортировать Tkinter . Однако я получаю сообщение об ошибке о том, что Tkinter не установлен:

Вероятно, я мог бы установить его с помощью Synaptic Manager (можно?), однако мне пришлось бы устанавливать его на каждую машину, на которой я программирую. Можно ли добавить библиотеку Tkinter в мою рабочую область и ссылаться на нее оттуда?

подошло ли вам решение, предложенное в ответе? Это не для меня: E: Не удалось найти пакет python-tk, у кого-нибудь была эта проблема?

22 ответа 22

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

Более безопасно установить python-tk на вашем компьютере с помощью apt-get. (Работает с дистрибутивами, производными от Debian, такими как Ubuntu; обратитесь к вашему диспетчеру пакетов и списку пакетов для других дистрибутивов.)

@BryanOakley: Конечно. У плаката, похоже, была коробка Linux на основе apt, поэтому ответ. Это выглядело как узкая проблема. Я не ожидал, что этот ответ наберет столько голосов.

Только что проделал это упражнение на Mint18 (полученном из 16.04 Ubuntu), и оно было в два раза лучше. sudo apt install -y python3-tk

Как установить tkinter из исходников? У меня есть tcl/tk, проверено с помощью Wish. Я не могу найти исходный архив для tkinter.

На самом деле для установки tkinter для python3 вам просто нужно использовать следующее:

Кроме того, для пользователей Fedora используйте следующую команду:

Если вы новичок в Linux, как и я, обратите внимание: если у apt-get возникают проблемы с поиском/установкой python3-tk, попробуйте сначала запустить sudo apt-get update. В моей 32-разрядной системе Linux Mint 18.3 Synaptic и apt-get требуют этого чаще, чем я предполагал.

Я получаю, что python3-tk уже является самой новой версией (3.5.1-1), и когда я импортирую tkinter, я все еще получаю: ModuleNotFoundError: Нет модуля с именем «tkinter», который я использую (Python 3.7.5)

Если, как и я, у вас нет привилегий суперпользователя в вашей сети из-за ваших замечательных друзей в I.S., и вы работаете с локальной установкой, у вас могут возникнуть проблемы с описанными выше подходами.

Я потратил целую вечность на Google, но, в конце концов, это просто.

Чтобы установить локально в Linux (я сделал это в свой домашний каталог), извлеките файлы .tar.gz для tcl и tk. Затем откройте файлы readme в каталоге ./unix. я побежал

Это может показаться утомительным, но файлы крошечные, а установка выполняется очень быстро.

Затем повторно запустите python setup.py build и python setup.py install в каталоге установки python, и все должно заработать. Это сработало для меня - и теперь я могу импортировать Tkinter и т. д. сколько душе угодно - yipidy-yay. Целый день потратил на это - надеюсь, что эта заметка спасет других от боли.

Привет, Саймон. Я просто схожу с ума от линукса. Мне нужно установить tcl/tk и python локально. Я хочу установить их в "/home/cnel711/install/". После установки tcl/tk. я должен установить путь для Python? и как. Я также использую ./configure для установки Python. спасибо

Привет, у меня уже есть tcl/tk, установленный локально, и я пересобрал python. Но при сборке python (локально) я получаю сообщение об ошибке: libtk8.6.so: невозможно открыть общий объектный файл: нет такого файла или каталога, и модуль _tkinter не удалось собрать. Я даже пытался указать путь к своим библиотекам tcl/tk с помощью --with_tcltk_libs, но это не помогло.

@DavidMerinos, я полагаю, что файл setup.py находится в исходном каталоге, где вы изначально установили Python — именно там я его и нашел. Если вы не удалили его, но забыли, где находится этот каталог, вы можете запустить команду find ~ -type f -name setup.py из любой точки вашей оболочки.

Если вы используете Python 3, это может быть связано с тем, что вы вводите Tkinter, а не tkinter

Ах, в конце концов проблема была именно в букве Т! Я следил за каким-то онлайн-кодом, который был написан заглавными буквами. Большое спасибо!!

Для пользователей Arch Linux это выглядит примерно так

вам понадобится пакет и его зависимости.

поскольку вы упомянули synaptic, вы должны использовать систему на базе Debian. один из способов получить то, что вам нужно:

Вам не нужно скачивать Tkinter — это неотъемлемая часть всех дистрибутивов Python (кроме бинарных дистрибутивов для платформ, не поддерживающих Tcl/Tk).

В моем случае в Windows помогла переустановка дистрибутива Python. Давным-давно я отключил функцию установки "Tcl/Tk". После переустановки все работает нормально, и я могу импортировать _tkinter и импортировать Tkinter .

Если вы используете RHEL, CentOS, Oracle Linux и т. д., вы можете использовать yum для установки модуля tkinter

В CentOS 7 я установил tkinter, но мой Python по умолчанию (2.7) по-прежнему жалуется "Нет модуля с именем tkinter"!

для пользователя python3 установите пакет python3-tk, выполнив команду sudo apt-get install python3-tk

tk-devel также необходимо установить в моем случае

установить их и пересобрать Python

Для Python 3.7 в Ubuntu мне пришлось использовать sudo apt-get install python3.7-tk, чтобы заставить его работать

Выпуск Fedora 25 (двадцать пять)

Это сработало для меня.

@mikeymop, я не имел в виду, что это не работает на F26. Вместо этого хотел быть очень ясным и конкретным в рабочих условиях.

Есть _tkinter и Tkinter — оба работают на Py 3.x. Но на всякий случай — скачайте Loopy и измените корневой каталог python (если вы используете IDE, например PyCharms) на каталог установки Loopy. Вы получите эту библиотеку и многое другое.

Если вы используете Python 3, вы должны установить его следующим образом:

Tkinter для Python 2 ( python-tk ) отличается от Python 3 ( python3-tk ).

@MatthewRead Я изменил его. Я оставил его там случайно, и вы правы. Я не имею никакого отношения к процессу установки Tk.

Tkinter — это модуль с графическим интерфейсом для Python. вы можете использовать его для создания приложений на основе графического интерфейса в python. Tkinter предоставляет несколько виджетов с графическим интерфейсом, таких как кнопки, меню, холст, текст, рамка, метка и т. Д., Для разработки настольных приложений. Хотя Tkinter очень популярен и включен в Windows, Macosx устанавливает Python, существуют также альтернативные варианты, такие как pyQt, wxPython.

В этом руководстве мы увидим, как установить его в Linux и использовать на примере.

Сначала проверьте, установлен ли у вас Python, а также проверьте его версию

Откройте терминал и введите python. если он установлен, он покажет информацию, такую ​​​​как версия, помощь. проверьте свою версию (у меня python 2.7.9)

aman@vostro:~$ python Python 2.7.9 (по умолчанию, 2 апреля 2015 г., 15:33:21) [GCC 4.9.2] в linux2 Введите "help", "copyright", "credits" или "license " для получения дополнительной информации.

Если у вас нет Python, установите его sudo apt-get install python

Если вы хотите установить Python 3, введите следующее. Если вы новичок, я бы порекомендовал Python 2 вместо Python 3. Python 2 по-прежнему очень популярен, и на нем делается много приложений. В Ubuntu python2 по-прежнему используется по умолчанию sudo apt-get install python3

Наконец, установите Tkinter

Теперь давайте проверим, хорошо ли работает Tkinter, на этом небольшом примере

откройте терминал и войдите в оболочку Python. питон

для python3 python3

Если Python был установлен правильно, вы получите приглашение >>>. aman@vostro:~$ питон

Теперь импортируйте модуль Tkinter. он не покажет никакой ошибки, если он был импортирован правильно. ПРИМЕЧАНИЕ. Убедитесь, что вы вводите Tkinter (не tkinter) в python2 и tkinter (не Tkinter) в python3.

Однако, если вы хотите воспользоваться преимуществами последней версии Tkinter, вам необходимо установить версию Python, поддерживающую Tcl/Tk 8.5 или выше, а также Ttk (расширение Tile, интегрированное в Tk), которое требуется для запуска текущего набора виджетов Tk.

  • Python 3.7 или более поздней версии для Windows поставляется со всем необходимым для запуска полностью настроенного Tk.
  • Если у вас Python 3.6 или более ранняя версия, вы можете просто перейти на более новую версию Python, включающую последнюю версию Tkinter.

Распространения Python с Tkinter

Популярные дистрибутивы Python, такие как ActivePython и Anaconda, поставляются с Tkinter.

Самый простой способ установить Tkinter в среде Windows — загрузить и установить ActivePython 3.8 или 3.7 отсюда.

Кроме того, вы можете создать и активировать среду Conda с Python 3.7 или более поздней версии, которая интегрирована с последней версией Tkinter.

<р>1. Чтобы создать новую среду Conda Python с именем и установить python 3.8, откройте приглашение Anaconda или терминал и введите:

<р>2. Чтобы активировать новую среду с Python 3.8 и переключиться на нее, введите:

Проверьте установку Tkinter

Чтобы убедиться, что Tkinter установлен и готов к загрузке Python, запустите следующий код в консоли Python:

Если Tkinter установлен и работает правильно, появится небольшое всплывающее окно. В первой строке в верхней части окна должно быть указано: Это Tcl/Tk версии 8.6.

Вы также можете проверить версию Tcl/Tk, используемую Tkinter, с помощью следующего кода:

Вывод должен быть похож на:

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

Если Tkinter установлен правильно, должно появиться небольшое всплывающее окно с сообщением.

Пакет tkinter («интерфейс Tk») — это стандартный интерфейс Python для набора инструментов Tcl/Tk GUI. И Tk, и tkinter доступны на большинстве платформ Unix, включая macOS, а также в системах Windows.

Запуск python -m tkinter из командной строки должен открыть окно, демонстрирующее простой интерфейс Tk, сообщая вам, что tkinter правильно установлен в вашей системе, а также показывая, какая версия Tcl/Tk установлена, чтобы вы могли прочитать документацию по Tcl/Tk, относящуюся к этой версии.

Tkinter поддерживает ряд версий Tcl/Tk, созданных как с поддержкой потоков, так и без них. Официальный бинарный релиз Python объединяет потоки Tcl/Tk 8.6. Дополнительные сведения о поддерживаемых версиях см. в исходном коде модуля _tkinter.

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

В Tcl/Tk 8.5 (2007 г.) представлен современный набор тематических компонентов пользовательского интерфейса, а также новый API для их использования. По-прежнему доступны как старые, так и новые API. Большая часть документации, которую вы найдете в Интернете, по-прежнему использует старый API и может быть безнадежно устаревшей.

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

Справочная документация по Tkinter 8.5 с подробным описанием доступных классов, методов и параметров.

Подробный справочник по каждой базовой команде Tcl/Tk, используемой Tkinter.

Дополнительная документация и ссылки на разработку ядра Tcl/Tk.

Архитектура¶

Tcl/Tk не является отдельной библиотекой, а состоит из нескольких отдельных модулей, каждый из которых имеет отдельные функции и собственную официальную документацию. Вместе с бинарными версиями Python поставляется дополнительный модуль.

Tcl — это язык программирования с динамической интерпретацией, как и Python. Хотя он может использоваться сам по себе как язык программирования общего назначения, чаще всего он встраивается в приложения C в качестве механизма сценариев или интерфейса для набора инструментов Tk. Библиотека Tcl имеет интерфейс C для создания и управления одним или несколькими экземплярами интерпретатора Tcl, запуска команд и сценариев Tcl в этих экземплярах и добавления пользовательских команд, реализованных либо в Tcl, либо в C. Каждый интерпретатор имеет очередь событий, и существуют средства для отправки ему событий и их обработки. В отличие от Python, модель выполнения Tcl разработана с учетом совместной многозадачности, и Tkinter устраняет эту разницу (подробности см. в разделе Модель потоков).

Tk — это пакет Tcl, реализованный на языке C, который добавляет пользовательские команды для создания виджетов графического интерфейса и управления ими. Каждый объект Tk встраивает свой собственный экземпляр интерпретатора Tcl с загруженным в него Tk. Виджеты Tk очень настраиваемые, хотя и за счет устаревшего внешнего вида. Tk использует очередь событий Tcl для генерации и обработки событий GUI.

Тематический Tk (Ttk) — это новое семейство виджетов Tk, которые на разных платформах выглядят гораздо лучше, чем многие классические виджеты Tk. Ttk распространяется как часть Tk, начиная с версии Tk 8.5. Привязки Python предоставляются в отдельном модуле tkinter.ttk .

Внутренне Tk и Ttk используют возможности базовой операционной системы, т. е. Xlib в Unix/X11, Cocoa в macOS, GDI в Windows.

Когда ваше приложение Python использует класс в Tkinter, например, для создания виджета, модуль tkinter сначала собирает командную строку Tcl/Tk. Он передает эту командную строку Tcl внутреннему бинарному модулю _tkinter, который затем вызывает интерпретатор Tcl для ее оценки. Затем интерпретатор Tcl вызовет пакеты Tk и/или Ttk, которые, в свою очередь, вызовут Xlib, Cocoa или GDI.

Модули Tkinter¶

Поддержка Tkinter распределена по нескольким модулям. Большинству приложений потребуется основной модуль tkinter, а также модуль tkinter.ttk, который предоставляет набор современных тематических виджетов и API:

Класс Tk создается без аргументов. Это создает виджет верхнего уровня Tk, который обычно является главным окном приложения. С каждым экземпляром связан собственный интерпретатор Tcl.

Ткинтер. Tcl ( screenName = None , baseName = None , className = 'Tk' , useTk = 0 ) ¶ < /p>

Функция Tcl() — это фабричная функция, которая создает объект, очень похожий на объект, созданный классом Tk, за исключением того, что она не инициализирует подсистему Tk. Это чаще всего бывает полезно при управлении интерпретатором Tcl в среде, где нежелательно создавать посторонние окна верхнего уровня или где это невозможно (например, в системах Unix/Linux без X-сервера). Для объекта, созданного объектом Tcl(), может быть создано окно верхнего уровня (и инициализирована подсистема Tk), вызвав его метод loadtk().

Модули, обеспечивающие поддержку Tk, включают:

Основной модуль Tkinter.

Диалоговое окно, позволяющее пользователю выбрать цвет.

Базовый класс для диалогов, определенных в других перечисленных здесь модулях.

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

Утилиты для работы со шрифтами.

Доступ к стандартным диалоговым окнам Tk.

Текстовый виджет со встроенной вертикальной полосой прокрутки.

Основные диалоговые окна и удобные функции.

Тематический набор виджетов, представленный в Tk 8.5, предоставляющий современные альтернативы многим классическим виджетам в основном модуле tkinter.

Двоичный модуль, содержащий низкоуровневый интерфейс для Tcl/Tk. Он автоматически импортируется основным модулем tkinter и никогда не должен использоваться непосредственно разработчиками приложений. Обычно это общая библиотека (или DLL), но в некоторых случаях она может быть статически связана с интерпретатором Python.

Интегрированная среда разработки и обучения Python (IDLE). На основе tkinter .

Символические константы, которые можно использовать вместо строк при передаче различных параметров в вызовы Tkinter. Автоматически импортируется основным модулем tkinter.

(экспериментальная функция) Поддержка перетаскивания для tkinter . Это устареет, когда будет заменено на Tk DND.

(устарело) Старый сторонний пакет Tcl/Tk, добавляющий несколько новых виджетов. Лучшие альтернативы для большинства можно найти в tkinter.ttk .

Графика черепахи в окне Tk.

Tkinter Life Preserver¶

Этот раздел не предназначен для использования в качестве исчерпывающего руководства ни по Tk, ни по Tkinter. Для этого обратитесь к одному из внешних ресурсов, упомянутых ранее. Вместо этого в этом разделе дается очень краткий обзор того, как выглядит приложение Tkinter, определяются основные концепции Tk и объясняется, как устроена оболочка Tkinter.

Оставшаяся часть этого раздела поможет вам определить классы, методы и параметры, которые вам потребуются в вашем приложении Tkinter, и где найти более подробную документацию по ним, в том числе в официальном справочном руководстве по Tcl/Tk.< /p>

Программа Hello World¶

Мы начнем с просмотра приложения «Hello World» в Tkinter. Это не самый маленький текст, который мы могли бы написать, но его достаточно, чтобы проиллюстрировать некоторые ключевые понятия, которые вам необходимо знать.

После импорта в следующей строке создается экземпляр класса Tk, который инициализирует Tk и создает связанный с ним интерпретатор Tcl. Он также создает окно верхнего уровня, известное как корневое окно, которое служит главным окном приложения.

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

Следующая строка создает виджет метки, содержащий статическую текстовую строку. Метод grid() используется для указания относительного макета (положения) метки в содержащем ее виджете фрейма, аналогично тому, как работают таблицы в HTML.

Затем создается виджет-кнопка, который размещается справа от метки. При нажатии вызывается метод destroy() корневого окна.

Наконец, метод mainloop() выводит все данные на дисплей и реагирует на действия пользователя до тех пор, пока программа не завершится.

Важные концепции Tk¶

Даже эта простая программа иллюстрирует следующие ключевые концепции Tk:

Пользовательский интерфейс Tkinter состоит из отдельных виджетов. Каждый виджет представлен как объект Python, созданный из таких классов, как ttk.Frame , ttk.Label и ttk.Button .

Виджеты организованы в виде иерархии. Метка и кнопка находились внутри фрейма, который, в свою очередь, находился в корневом окне. При создании каждого дочернего виджета его родительский виджет передается в качестве первого аргумента конструктору виджета.

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

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

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

Понимание того, как Tkinter оборачивает Tcl/Tk¶

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

Независимо от того, пытается ли он перемещаться по справочной документации, пытается найти правильный метод или параметр, адаптирует какой-либо существующий код или отлаживает ваше приложение Tkinter, иногда бывает полезно понять, как выглядят эти базовые команды Tcl/Tk. .

Для иллюстрации приведем Tcl/Tk-эквивалент основной части приведенного выше скрипта Tkinter.

Синтаксис Tcl подобен многим языкам оболочки, где первое слово — это команда, которая должна быть выполнена, а аргументы этой команды следуют за ним, разделенные пробелами.Не вдаваясь в подробности, обратите внимание на следующее:

Команды, используемые для создания виджетов (например, ttk::frame ), соответствуют классам виджетов в Tkinter.

Параметры виджета Tcl (например, -text ) соответствуют аргументам ключевого слова в Tkinter.

На виджеты ссылаются по пути в Tcl (например, .frm.btn ), тогда как Tkinter использует не имена, а ссылки на объекты.

Место виджета в иерархии виджетов закодировано в его (иерархическом) имени пути, которое использует расширение . (точка) в качестве разделителя пути. Путь к корневому окну просто . (точка). В Tkinter иерархия определяется не путем, а указанием родительского виджета при создании каждого дочернего виджета.

Операции, реализованные как отдельные команды в Tcl (например, grid или destroy ), представлены как методы в объектах виджетов Tkinter. Как вы вскоре увидите, в других случаях Tcl использует то, что выглядит как вызовы методов для объектов виджетов, что более точно отражает то, что используется в Tkinter.

Как мне…? Какая опция…?¶

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

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

При поиске способов использования API полезно знать точное название используемого класса, параметра или метода. Самоанализ в интерактивной оболочке Python или с помощью функции print() может помочь вам определить, что вам нужно.

Чтобы узнать, какие параметры конфигурации доступны для любого виджета, вызовите его метод configure(), который возвращает словарь, содержащий различную информацию о каждом объекте, включая его значения по умолчанию и текущие значения. Используйте keys(), чтобы получить только названия каждой опции.

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

Аналогично вы можете найти доступные методы для объекта виджета, используя стандартную функцию dir(). Если вы попробуете, то увидите, что существует более 200 распространенных методов виджета, поэтому полезно снова определить те из них, которые специфичны для класса виджета.

Навигация по справочному руководству по Tcl/Tk¶

Как уже отмечалось, официальное справочное руководство по командам Tk (справочные страницы) часто является наиболее точным описанием того, что делают конкретные операции с виджетами. Даже когда вы знаете название нужного параметра или метода, у вас все равно может быть несколько мест, где можно посмотреть.

Хотя все операции в Tkinter реализованы как вызовы методов для объектов виджетов, вы видели, что многие операции Tcl/Tk выглядят как команды, которые принимают путь к виджету в качестве первого параметра, за которым следуют необязательные параметры, например

Другие, однако, больше похожи на методы, вызываемые для объекта виджета (фактически, когда вы создаете виджет в Tcl/Tk, он создает команду Tcl с именем пути к виджету, с первым параметром этой команды имя вызываемого метода).

В официальной справочной документации по Tcl/Tk вы найдете большинство операций, которые выглядят как вызовы методов, на странице руководства для определенного виджета (например, вы найдете метод invoke() в руководстве по ttk::button). страницу), в то время как функции, которые принимают виджет в качестве параметра, часто имеют свою собственную справочную страницу (например, сетку).

Вы найдете много общих опций и методов в справочных страницах options или ttk::widget, а другие можно найти на справочной странице для определенного класса виджетов.

Вы также обнаружите, что многие методы Tkinter имеют составные имена, например, winfo_x() , winfo_height() , winfo_viewable() . Вы найдете документацию по всем этим вопросам на справочной странице winfo.

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

Модель потоков¶

Python и Tcl/Tk имеют очень разные модели многопоточности, которые tkinter пытается объединить. Если вы используете потоки, возможно, вам следует знать об этом.

С интерпретатором Python может быть связано много потоков. В Tcl можно создать несколько потоков, но с каждым потоком связан отдельный экземпляр интерпретатора Tcl. Потоки также могут создавать более одного экземпляра интерпретатора, хотя каждый экземпляр интерпретатора может использоваться только тем потоком, который его создал.

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

Приложения Tcl/Tk обычно управляются событиями, что означает, что после инициализации интерпретатор запускает цикл событий (т. е. Tk.mainloop() ) и реагирует на события. Поскольку он однопоточный, обработчики событий должны реагировать быстро, иначе они заблокируют обработку других событий. Чтобы избежать этого, любые длительные вычисления не должны выполняться в обработчике событий, а либо разбиваться на более мелкие части с помощью таймеров, либо выполняться в другом потоке. Это отличается от многих инструментов GUI, где GUI работает в совершенно отдельном потоке от всего кода приложения, включая обработчики событий.

Если интерпретатор Tcl не запускает цикл обработки событий и не обрабатывает события, любые вызовы tkinter, сделанные из потоков, отличных от того, в котором запущен интерпретатор Tcl, завершатся ошибкой.

Существует ряд особых случаев:

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

  • Несмотря на то, что tkinter позволяет создавать более одного экземпляра объекта Tk (с собственным интерпретатором), все интерпретаторы, являющиеся частью одного и того же потока, используют общую очередь событий, которая быстро становится уродливой. На практике не создавайте более одного экземпляра Tk за раз. В противном случае лучше создать их в отдельных потоках и убедиться, что вы используете сборку Tcl/Tk с поддержкой потоков.

  • Блокирующие обработчики событий — не единственный способ предотвратить повторный вход интерпретатора Tcl в цикл обработки событий. Можно даже запустить несколько вложенных циклов событий или полностью отказаться от цикла событий. Если вы делаете что-то сложное, когда дело доходит до событий или тем, помните об этих возможностях.

  • Есть несколько избранных функций tkinter, которые в настоящее время работают только при вызове из потока, создавшего интерпретатор Tcl.

Полезный справочник¶

Параметры настройки¶

Параметры управляют такими параметрами, как цвет и ширина границ виджета. Параметры можно задать тремя способами:

В этой статье мы узнаем, как установить Tkinter в Python на MacOS. Tkinter — это привязка Python к набору инструментов Tk GUI. Это стандартный интерфейс Python для набора инструментов Tk GUI, который де-факто является стандартным графическим интерфейсом Python.

Установка:

Способ 1. Использование pip для установки Tkinter

Выполните следующие шаги, чтобы установить пакет Tkinter в macOS с помощью pip:

Шаг 2. Проверьте правильность установки pip3 и python3.

Шаг 3. Обновите pip, чтобы избежать ошибок во время установки.

Шаг 4. Введите следующую команду, чтобы установить Tkinter с помощью pip3.

Способ 2. Использование setup.py для установки Tkinter

Выполните следующие действия, чтобы установить пакет yesTkinter в macOS с помощью файла setup.py:

Шаг 1. Загрузите последний исходный пакет Tkinter для python3 отсюда.

Шаг 2. Извлеките загруженный пакет с помощью следующей команды.

Шаг 3. Зайдите в папку и введите следующую команду, чтобы установить пакет.

Примечание. В вашей системе должны быть установлены инструменты разработчика для XCode MacOS

Проверка установки Tkinter в macOS:

Выполните следующий импорт в терминале Python, чтобы убедиться, что установка выполнена правильно:

Если при импорте модуля возникает ошибка, значит он установлен неправильно.

Читайте также: