2010-12-02 16 views
2

Я пытаюсь свернуть окно в лоток, но, похоже, он отказывается скрываться от панели задач. Я потратил немного времени и перепробовал код проблемы до этого. Это не mcuh так что мне интересно, если мне нужно что-то еще, чтобы скрыть мое приложение в трей в ОС Windows 7.Скрыть окно с панели задач

import sys, os 
from PyQt4 import uic 
from PyQt4.QtGui import QMainWindow, QApplication 

class MyClass(QMainWindow): 
    def __init__(self, parent = None): 
     QMainWindow.__init__(self, parent) 
     self.ui = uic.loadUi(os.path.join("gui", "timeTrackerClientGUI.ui"), self) 
    def hideEvent(self, event): 
     self.hide() 
    def showEvent(self, event): 
     self.show() 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    wnd = MyClass() 
    wnd.show() 
    app.exec_() 

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

alt text

ответ

2

Потребовалось довольно уродливый хак, чтобы заставить его работать, но вот окончательный код, если кто-то заинтересован, фот мой конкретной платформы модуль, вы можете использовать platform.name или аналогичной функции:

def hideEvent(self, event): 
    self.hide() 
    if ph.is_windows(): 
     self.hidden = True 
     self.setWindowFlags(Qt.ToolTip) 
def showEvent(self, event): 
    if ph.is_windows() and self.hidden: 
     self.setWindowFlags(Qt.Window) 
     self.hidden = False 
    self.show() 
1

вызова показать/скрыть в showEvent()/hideEvent() не имеет смысла - эти события являются результатом вызовов show()/hide() (и т.п.), а не триггера. Если вы хотите переключить видимость окна, щелкнув значок в трее, попробуйте setVisible (! IsVisible()) в виджетах, если вы хотите скрыть окно, когда пользователь нажимает кнопку закрытия окна, попробуйте переопределить closeEvent():

MyMainWindow::closeEvent(QCloseEvent* e) { 
    hide(); 
    e->accept(); 
} 

в Python, что

def closeEvent(self, event): 
    self.hide() 
    event.accept() 
+0

Я хочу скрыть окно, чтобы оно не отображалось на панели задач, когда я минимизирую его. – dutt 2010-12-02 09:34:06

Смежные вопросы