вопрос в самих вариантах , это ведь можно провернуть еще как-либо и без 100+ строк?
«можно без шуток про sys.exit() «
Bаcon, жду твоих комментов про то что не умею гуглить
вот тебе сразу статью на англе, угу
https://stackoverflow.com/questions/758256/pyqt4-minimize-to-tray
- Вопрос задан более двух лет назад
- 2050 просмотров
Комментировать
Решения вопроса 3
Я не очень понял вопрос, но нашёл такое:
# Python 3
import ctypes
ctypes.windll.user32.ShowWindow( ctypes.windll.kernel32.GetConsoleWindow(), 6 )
notepad_handle = ctypes.windll.user32.FindWindowW(None, «Untitled — Notepad»)
ctypes.windll.user32.ShowWindow(notepad_handle, 6)
notepad_handle = ctypes.windll.user32.FindWindowW(u»Notepad», None)
ctypes.windll.user32.ShowWindow(notepad_handle, 6)
Ответ написан более двух лет назад
Комментировать
Нравится 1 Комментировать
Начинающий питонист.
Можно через windll, но мне было проще через AHK.
Ответ написан более двух лет назад
Комментировать
Как свернуть любую программу в трей Windows 10
Нравится 1 Комментировать
Не отрицаю свою глупость, и нет, мне не стыдно
Саму консоль как таковую — по сути нет, возможно проще будет сделать exe-шник из скрипта, и уже думать дальше
но еще проще — Tkinter
исходник из инета ниже
from pystray import MenuItem as item import pystray from PIL import Image import tkinter as tk window = tk.Tk() window.title(«Title») def quit_window(icon, item): icon.stop() window.destroy() def show_window(icon, item): icon.stop() window.after(0,window.deiconify) def withdraw_window(): window.withdraw() image = Image.open(«icon.ico») menu = (item(‘Quit’, quit_window), item(‘Show’, show_window)) icon = pystray.Icon(«name», image, «title», menu) icon.run() window.protocol(‘WM_DELETE_WINDOW’, withdraw_window) window.mainloop()
Ответ написан более двух лет назад
Комментировать
Нравится Комментировать
Ответы на вопрос 1
Delphi Developer, сис. админ
Ты понимаешь, что ты хочешь? Консольное приложение, которое почти не имеет дел с оконным апи винды ты хочешь «свернуть в трей»? Нет вообще ни какого «свернуть в трей», есть «значок в трее». Этот значок создается через WinAPI. Но только вряд-ли что-то сработает без основного цикла обработки сообщений Windows.
Ответ написан более двух лет назад
можно запаковать его в ешешник и уже сворачивать в трей, в чем беда?
Алексей Фобиус, при чем тут ехе? Ты не понимаешь, что ты вообще хочешь
Hemul GM, это как раз таки ты не понимаешь, прочитай вопрос еще раз
а то второй раз мне это говоришь)
еще раз : «Возможно ли свернуть консоль python в трей?»
ответ на вопрос : нет
ах да, НЕ ПОНИМАЕШЬ ЧЕГО САМ ХОЧЕШЬ. восклицательный знак
насчет предложений, если конкретный ответ — нет, то можно как и все нормальные люди предложить другие варианты
Алексей Фобиус, что за идиотская манера общения?
Ехе — это вообще ничего не значит. Ехе — это просто исполнительный файл, он ни чем тебе не обязан.
Трей — это возможность ОС, которая позволяет тебе создавать значок в трее. НЕЛЬЗЯ СВЕРНУТЬ В ТРЕЙ. ТРЕЙ — это значок, который создается вручную, а НЕ ДЛЯ КАЖДОГО ЕХЕ.
Чтоб пользоваться WinAPI тебе нужно реализовать систему сообщений в своём приложении, иначе ТЫ НИЧЕГО НЕ СМОЖЕШЬ ОБРАБОТАТЬ. Qt или Tkinter эту систему сообщений реализует.
Повторяю в который раз «Ты не понимаешь, что ты хочешь»
Hemul GM, хорошо, давай по другому, может дойдет
просто консоль из питона , ну из IDE окда (шелл или как там ее), нет возможности свернуть и развернуть, т.е. никак, если ты закрыл — ты закрыл, почему говорю про ехе? да потому что ехе это не скрипт который запускает консоль питона, его запускает сама винда, поэтому и говорю про него.
к чему твои слова по типу «ты не знаешь чего ты хочешь», тебе видимо реально трудно дойти до того, чтобы просто пораскинуть мозгами и понять то что я хочу свернуть в трей сам шелл, консоль от питона, понимаешь да?
мне просто стало интересно, а что будет если
как тебе еще это показать, нет примеров больше
когда у тебя в голове что-то проясниться чтоб все таки смог понять ,что мне просто стало интересно ВОЗМОЖНО ЛИ СВЕРНУТЬ В ТРЕЙ КОНСОЛЬ ПИТОНА, ИМЕННО ПИТОНА И ИМЕННО СВЕРНУТЬ, понимаешь ? я понимаю что сейчас начнешь мне тут стучать по клавиатуре о том что в трей не сворачивают, окно удаляется и при нажатии на значек в трее создается снова, но к чему это?
ни к селу ни к городу, как и твои слова о том что не знаю чего хочу, уймись уже
я хочу то, что написано в вопросе)
Алексей Фобиус, ты дебил. Ну или просто тупой.
Консоль — она всегда одинаковая. Консоль — это лишь вывод и ввод. Консоль не имеет окна. Консоль не имеет ничего. То что ты видишь — это окно созданное ОС для вывода того, что ты пишешь в консоль.
Трей — это системная функция ОС, которая создается кодом, который вызывает системные апи методы, чтоб настроить этот трей. Винда работает на сообщениях и твоя консоль не может их получать без основного цикла обработки сообщений ОС.
В трей не сворачивают! ЗАПОМНИ. Трей — это независимая функция. «СВЕРНУТЬ В ТРЕЙ» — это скрыть окно Windows.Visible = False и ВСЁ. А трей может отсылать твоему приложению сообщения (ЕСЛИ ТВОЁ ПРИЛОЖЕНИЕ ОБРАБАТЫВАЕТ СООБЩЕНИЯ). КЛИК по трею генерирует сообщение.
И твое приложение отвечает на это сообщение.
Источник: qna.habr.com
Python-сообщество
- Начало
- » GUI
- » tkinter | Как свернуть в трей?
#1 Фев. 1, 2018 18:55:26
tkinter | Как свернуть в трей?
Собственно есть ли способы свернуть tkinter приложение в трей?
#2 Фев. 1, 2018 19:49:37
tkinter | Как свернуть в трей?
Такого метода как “свернуть в трей” вообще нету. В трей помещеться иконка, а окно приложения просто скрываеться/закрывается. Потом когда надо оно опять отображаетьсясоздается заново.
Но в ткинтере нету штатного способа создать иконку в трее, нужно или искать сторонний модуль, или пилить его самому с помощью API оперционной системы.
[code python][/code]
Бериегите свое и чужое время.
Источник: python.su
PyQt5 — Урок 003. QSystemTrayIcon — Как свернуть приложение в трей
Аналогичная статья на Qt/C++ Одной из первых статей по работе с Qt была статья по работе с QSystemTrayIcon . А теперь настал черёд аналогичного материала, но уже на Python с применением библиотеки PyQt5. В данной статье будет рассмотрено, как написать простейшее приложение на PyQt5, которое будет сворачиваться в системный трей как при нажатии пунктов меню в иконке системного трея, так и при нажатии кнопки закрытия окна.
Структура проекта в данном случае минимальна. Будет всего лишь один файл, который и будет запускаться. То есть файл main .py . Само приложение будет выглядеть следующим образом. Если чекбокс отмечен, то приложение будет сворачиваться в трей, в противном случае приложение будет завершаться.
Помимо этого имеется возможность сворачиваться приложение в трей с помощью контекстного меню иконки приложения в трее. Когда приложение будет сворачиваться в системный трей по кнопке закрытия окна приложения, то будет отображаться сообщение об этом.
main .py
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QGridLayout, QWidget, QCheckBox, QSystemTrayIcon, QSpacerItem, QSizePolicy, QMenu, QAction, QStyle, qApp from PyQt5.QtCore import QSize class MainWindow(QMainWindow): «»» Объявление чекбокса и иконки системного трея. Инициализироваться будут в конструкторе. «»» check_box = None tray_icon = None # Переопределяем конструктор класса def __init__(self): # Обязательно нужно вызвать метод супер класса QMainWindow.__init__(self) self.setMinimumSize(QSize(480, 80)) # Устанавливаем размеры self.setWindowTitle(«System Tray Application») # Устанавливаем заголовок окна central_widget = QWidget(self) # Создаём центральный виджет self.setCentralWidget(central_widget) # Устанавливаем центральный виджет grid_layout = QGridLayout(self) # Создаём QGridLayout central_widget.setLayout(grid_layout) # Устанавливаем данное размещение в центральный виджет grid_layout.addWidget(QLabel(«Application, which can minimize to Tray», self), 0, 0) # Добавляем чекбокс, от которого будет зависеть поведение программы при закрытии окна self.check_box = QCheckBox(‘Minimize to Tray’) grid_layout.addWidget(self.check_box, 1, 0) grid_layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Expanding), 2, 0) # Инициализируем QSystemTrayIcon self.tray_icon = QSystemTrayIcon(self) self.tray_icon.setIcon(self.style().standardIcon(QStyle.SP_ComputerIcon)) »’ Объявим и добавим действия для работы с иконкой системного трея show — показать окно hide — скрыть окно exit — выход из программы »’ show_action = QAction(«Show», self) quit_action = QAction(«Exit», self) hide_action = QAction(«Hide», self) show_action.triggered.connect(self.show) hide_action.triggered.connect(self.hide) quit_action.triggered.connect(qApp.quit) tray_menu = QMenu() tray_menu.addAction(show_action) tray_menu.addAction(hide_action) tray_menu.addAction(quit_action) self.tray_icon.setContextMenu(tray_menu) self.tray_icon.show() # Переопределение метода closeEvent, для перехвата события закрытия окна # Окно будет закрываться только в том случае, если нет галочки в чекбоксе def closeEvent(self, event): if self.check_box.isChecked(): event.ignore() self.hide() self.tray_icon.showMessage( «Tray Program», «Application was minimized to Tray», QSystemTrayIcon.Information, 2000 ) if __name__ == «__main__»: import sys app = QApplication(sys.argv) mw = MainWindow() mw.show() sys.exit(app.exec())
Видеоурок
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.
Источник: evileg.com