Подтвердить что ты не робот

В чем разница между виджетами tkinter и tkinter.ttk в Python?

Основной модуль tkinter и его подмодуль ttk в Python 3 содержат одинаковые виджеты (т.е. Buttons, CheckButtons и т.д.).

Итак, при создании кнопки у вас есть свобода либо использовать виджет tkinter.Button, либо tkinter.ttk.Button.

Вы знаете, в чем разница между ними? Почему вы выбрали тот или другой?

4b9b3361

Ответ 1

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

ttk Виджеты используют стили, чтобы определить, как они выглядят, поэтому требуется немного больше работы, если вы хотите нестандартную кнопку. ttk Виджеты также немного задокументированы. Понимание базовых движков темы и компоновки (макет внутри самих виджетов, а не pack, grid и place) является проблемой.

Вообще говоря, тематические виджеты предоставят вам приложение, которое выглядит более "родным", но за счет потери конфигурации.

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

Ответ 2

Вы можете взглянуть на Преобразование существующих приложений для использования виджета Tile

Также смотрите:

Поддержка стилей виджета Tk

Как указано в этом документе:

Недавно другие инструментальные средства с открытым исходным кодом, такие как Qt (используемые KDE проект) и GTK (используется программным обеспечением для редактирования графики GIMP и Gnome) появились как мощные и бесплатные альтернативы Motif для Разработка графического интерфейса X-Window. Быстро растущий успех Open Source такие системы, как GNU/Linux, помогли обе инструментариям привлечь огромные сообщества разработчиков и фирмы (а иногда и дружественных) конкуренция между обеими сообществами привела к взрыву новых функции. Жажда свободы и настраиваемости создала потребность в themeability.

Текущая реализация Tk обеспечивает только внешний вид и внешний вид поддерживаемых платформ (Windows, X-Window, MacOS). Это частично объясняет Tk потерю разума, особенно среди разработчиков Linux, где поддержка темы считается "классной" или обязательной функцией.

В то время как вчерашняя цель многих графических интерфейсов была кросс-платформенной визуальной однородность (Qt и GTK заимствовали большую часть их внешнего вида от Windows, который ранее занимался NeXTStep), сейчас довольно часто найти огромные визуальные различия на сегодняшних рабочих столах, даже на аналогичных системы. Конкурсы скриншотов довольно распространены в наши дни.

...

Многие пользователи Tk могут видеть поддержку тем, как косметические или более низкие важности, чем очень необходимые функции, такие как мегалиги или объективации. Тем не менее, это важная особенность реализован для долгосрочной жизнеспособности Tk. Сейчас много курсов продвижение Qt, GTK или (aarggg!) Swing вместо Motif, не оставляя комната для Tk. Какими бы ни были его качества (кросс-платформенная, производительность, легкость использования, интернационализации и поддержки Unicode), отсутствие тематика всегда будет рассматриваться как одна из основных причин не используя Tk. Приложения, использующие Tk вместо GTK, будут выглядеть как "иностранные", на рабочем столе с изображением в pixmap-themed или даже на более новых MacOS и Windows версии, поскольку приложения pre-8.0 находились на рабочих столах, отличных от X.

Есть некоторые виджеты (всего 6), которые являются частью ttk, а не tkinter. как указано выше, некоторые элементы конфигурации отсутствуют, например fg и bg, но это можно сделать со стилем (введено в tk 8.5).

Использование обоих вместе с перегрузкой tkinter.ttk tkinter дает вам лучшее из обоих миров.

Некоторые из дополнительных виджетов в ttk очень полезны (есть 6, которые не найдены в tkinter), например Notebook (окна с вкладками), которые я часто использую.

Larz60p

Ответ 3

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

И виджеты Tkinter действительно не похожи на другие виджеты собственной платформы.

Но ttk более гладкий, приятный и похожий на другие платформы nattive.

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

И если вы создаете приложения для публики, то идите для обоих, потому что Tkinter необходим из-за создания окна и еще нескольких важных вещей, а для виджетов - для ttk.

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

ttk - честно вызов! Потому что у него нет Grid, Pack, Place и все больше и больше и еще более важных вещей. Но ждать!! Tkinter есть это! Так что используйте оба! Попробуйте сделать приятное приложение!

Реальная разница между ними заключается в том, что виджеты Tkinter более настраиваются по выбору, а ttk более современен и настраивается со стилями, которые являются действительно удобными ярлыками. И Tkinter похож на ядро окна, а ttk - стиль. Подумайте:

Tkinter --- HTML, ttk --- CSS, Python --- JavaScript.

Надеюсь, у вас было какое-то решение по этому поводу!