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? P>
6 Réponses :
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);
Cela devrait faire le tour:
Cela m'a conduit à des noix pendant des jours. Complete de code d'application pour implémenter ci-dessous.
BITS CLÉ: P>
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_()
Si vous êtes sur Ubuntu avec unité forte> et souhaitez masquer l'icône d'une application à partir du lanceur à gauche, vous aurez probablement besoin ici est un peu Exemple d'essayer des drapeaux de fenêtre. P> qt.splashcreen code>. Cela a fonctionné pour moi mais je ne me souviens pas si j'avais aussi besoin de
qt.tool code>, 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. P>
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_())
Initialise simplement votre fenêtre principale comme ceci self.sewindowflags (qt.tooltip) code> p>
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.