10
votes

Masquer l'application Pyqt de la barre des tâches

Je suis un débutant à Pyqt. J'essayais de créer une application simple pour essayer certaines des nombreuses fonctionnalités de la boîte à outils. Ma question est, comment puis-je masquer l'icône de l'application dans la barre des tâches? Je ne veux pas que l'utilisateur puisse voir l'icône dans la barre des tâches et pour le minimiser à l'aide de cette icône. Y a-t-il des drapeaux de fenêtre que je peux utiliser pour y parvenir?


4 commentaires

Dupliqué possible de PYQT4 Minimiser vers le plateau


@katrielaalex: Je pense qu'il désigne l'icône de la barre des tâches et non l'icône du bac.


@Pulpfiction: oui; La façon dont vous "minimiser les plateaux" est de masquer l'icône de la barre des tâches et de faire une icône de bac.


@Katrielaalex Oui, je voulais cacher l'icône de la barre des tâches, tandis que l'application n'est toujours pas minimisée.


6 Réponses :


0
votes

Je ne recommanderais pas d'essayer de masquer la présence de la barre des tâches d'une application, surtout si l'application est visible. Si vous n'essayez que d'éviter de minimiser dans la barre des tâches, vous pouvez y parvenir en créant votre widget de niveau supérieur avec les drapeaux de la fenêtre suivants comme celui-ci:

QWidget *mainWindow = new QWidget(0, Qt::CustomizeWindowHint 
    | Qt::WindowTitleHint | Qt::WindowSystemMenuHint 
    | Qt::WindowCloseButtonHint | Qt::WindowMaximizeButtonHint);


0 commentaires

8
votes

Cela devrait faire le tour: xxx


0 commentaires

1
votes

Cela m'a conduit à des noix pendant des jours. Complete de code d'application pour implémenter ci-dessous.

BITS CLÉ: P>

  • remplacer le closeEvent (), lui permettant de faire l'une des vitres ou une vraie sortie li>
  • Créez une installation pour que l'utilisateur choisisse soit Masquer ou Comportement de sortie Li>
  • ne montre pas () fenêtre principale sur instanciation, il suffit d'exécuter l'application li> ul>
    import sys
    from PyQt4.QtGui import QAction, QApplication, QFrame, QIcon, \
        QMainWindow, QMenu, QSystemTrayIcon
    from PyQt4.QtCore import SIGNAL
    
    class MyApp(QMainWindow):
        def __init__(self, parent, title):
            super(QMainWindow, self).__init__(parent)
            self.exitOnClose = False
            exit = QAction(QIcon(), "Exit", self)
            self.connect(exit, SIGNAL("triggered()"), self.exitEvent)
            self.trayIcon = QSystemTrayIcon(QIcon(), self)
            menu = QMenu(self)
            menu.addAction(exit)
            self.trayIcon.setContextMenu(menu)
            self.connect(self.trayIcon, \
                SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), \
                self.trayIconActivated)
            self.trayIcon.show()
            self.trayIcon.showMessage("MyApp is running!", "Click to open window\nRight click for menu" )
    
        def trayIconActivated(self, reason):
            if reason == QSystemTrayIcon.Context:
                self.trayIcon.contextMenu().show()
            elif reason == QSystemTrayIcon.Trigger:
                self.show()
                self.raise_()
    
        def closeEvent(self, event):
            if self.exitOnClose:
                self.trayIcon.hide()
                del self.trayIcon
                event.accept()
            else:
                self.hide()
                event.setAccepted(True)
                event.ignore()
    
        def exitEvent(self):
            self.exitOnClose = True
            self.close()
    
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        myapp = MyApp(None, "My System Tray App")
        app.exec_()
    


0 commentaires

0
votes

Si vous êtes sur Ubuntu avec unité et souhaitez masquer l'icône d'une application à partir du lanceur à gauche, vous aurez probablement besoin qt.splashcreen . Cela a fonctionné pour moi mais je ne me souviens pas si j'avais aussi besoin de qt.tool , qui suffit sur Windows. Pour la tentative SplashScreen, vous devrez peut-être réimplémenter la fonctionnalité de redimensionnement car elle désactive cette fonctionnalité d'une région QStatus (qui a une grippe) par exemple.

ici est un peu Exemple d'essayer des drapeaux de fenêtre.


0 commentaires

1
votes

adapté de Ce fil :

import sys
from PyQt4.QtGui import *

if __name__ == '__main__':
    app = QApplication(sys.argv)

    widget = QWidget()

    mainWindow = QMainWindow(widget)
    mainWindow.show()

    sys.exit(app.exec_())


0 commentaires

0
votes

Initialise simplement votre fenêtre principale comme ceci self.sewindowflags (qt.tooltip)


0 commentaires