Скрыть в трей программу tkinter
Мне нужен код, который сворачивал программу в tray по нажатии на кнопку, и открывал программу при нажатии на иконку программы этой же программы в трее.
Ответы (1 шт):
Tkinter — изначально не лучшее решение для работы с треем. Есть намного лучше библиотеки, как тот же PyQt5, который стандартными методами библиотеки способен дать функционал для работы с треем. Для работы с функционалом трея придётся использовать дополнительные библиотеки, такие как PyWin и pystray.
Для своей работы трей использует ивент-цикл, что и tkinter, а значит потребуется добавить асинхронность, для работы обоих вместе, а это лишь излишнее усложнение процесса. Намного рациональнее будет изначально использовать хорошую библиотеку, где "прямо с пакета" есть функционал для работы с треее.
Поддержку трея можно сделать лишь через костыли в виде других библиотек, так как стандартный Tkinter не поддерживает трей. В реальных проектах, в которых нужен будет подобный функционал, зачастую используют более высокоуровневые библиотеки и с большим функционалом, как например PyQT.
Этот вопрос повторяет вопрос с англоязычного стека: https://stackoverflow.com/questions/54399137/hide-tkinter-window-in-system-tray