Soy un principiante en PyQt. Estaba intentando crear una aplicación simple para probar algunas de las muchas características del juego de herramientas. Mi pregunta es, ¿cómo puedo ocultar el icono de la aplicación desde la barra de tareas? No deseo que el usuario pueda ver el ícono en la barra de tareas y minimizarlo usando este ícono. ¿Hay algún indicador de ventana que pueda usar para lograr esto?Ocultar la aplicación PyQt de la barra de tareas
Respuesta
Adaptado de this thread:
import sys
from PyQt4.QtGui import *
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = QWidget()
mainWindow = QMainWindow(widget)
mainWindow.show()
sys.exit(app.exec_())
No recomendaría tratar de ocultar la presencia de la barra de tareas de una aplicación, especialmente si la aplicación está visible. Si sólo está tratando de prevenir la minimización de la barra de tareas a continuación, se puede lograr esto mediante la creación de su widget de alto nivel con las siguientes banderas ventana como esta:
QWidget *mainWindow = new QWidget(0, Qt::CustomizeWindowHint
| Qt::WindowTitleHint | Qt::WindowSystemMenuHint
| Qt::WindowCloseButtonHint | Qt::WindowMaximizeButtonHint);
Si no desea que una bandera de maximizar, puede dejar ese de la lista también.
Los diversos indicadores de ventana que puede usar Qt están documentados here (Qt::WindowFlags).
Esto debe hacer el truco:
myApp.setWindowFlags(QtCore.Qt.Tool)
Esto me llevó frutos secos por día. Completar el código de la aplicación para implementar a continuación.
bits de clave:
- CloseEvent anulación(), que le permiten realizar una de simplemente ocultar la ventana o verdadera salida
- crear alguna facilidad para el usuario elegir entre ocultar o comportamiento salida
- no mostrar() en la ventana principal de instancias, simplemente exec_() de la aplicación
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 usted está en Ubuntu con Unity y desea ocultar el icono de una aplicación desde el iniciador de la mano del lado izquierdo, es probable que necesite Qt.SplashScreen
. Esto funcionó para mí, pero no recuerdo si también necesitaba Qt.Tool
, que es suficiente en Windows. Para el intento de SplashScreen puede que tenga que volver a implementar la funcionalidad de cambio de tamaño ya que deshabilita esta característica de un QStatusBar (que tiene un SizeGrip) por ejemplo.
Here es un pequeño ejemplo para probar los indicadores de ventana.
- 1. Aplicación en la barra de tareas
- 2. Qt Ocultar elemento de barra de tareas
- 3. Application.MainFormOnTaskbar: = False; no ocultar la aplicación de la barra de tareas
- 4. Eliminar/Ocultar la aplicación java de la barra de tareas/dock
- 5. Ocultación winforms aplicación desde la barra de tareas
- 6. ¿Cómo puedo ocultar el formulario de mi aplicación en la barra de tareas de Windows?
- 7. Ocultar el botón de la barra de tareas de otra aplicación
- 8. ¿Cómo ocultar una entrada en la barra de tareas pero mantener la forma de la ventana?
- 9. cómo ocultar la barra de estado en la aplicación Iphone
- 10. Win32: de pantalla completa y ocultar barra de tareas
- 11. Uso de las funciones de la barra de tareas de Windows 7 en PyQt
- 12. Insertar en la barra de tareas
- 13. Cómo ocultar un JFrame en la bandeja del sistema de la barra de tareas
- 14. Android: mostrar/ocultar la barra de estado/barra de estado
- 15. Cubra la barra de tareas con VB
- 16. Ocultar la barra de pestañas en una aplicación de barra de pestañas
- 17. Win32: Cómo ocultar ventanas de terceros en la barra de tareas por hWnd
- 18. eliminar la capacidad para cerrar la barra de tareas
- 19. Ocultar barra de navegación en la rotación
- 20. Ocultar la barra de desplazamiento en WebView
- 21. iPhone: ocultar/mostrar la barra de herramientas
- 22. control de la agrupación de la barra de tareas de windows 7 para mi aplicación
- 23. Cómo establecer el icono de la barra de tareas de la aplicación en Windows 7
- 24. Agregar el menú contextual de la barra de tareas a la aplicación Win7
- 25. muestra Jframe pero no muestra la barra de título en la barra de tareas
- 26. Altura/ancho de la barra de tareas de Windows
- 27. ¿Puedo ocultar el icono de la aplicación de la barra de acciones en Honeycomb?
- 28. Obtener el número de aplicaciones en la barra de tareas
- 29. La pantalla maximizada ignora la barra de tareas
- 30. Ocultar barra de notificaciones
posible duplicado de [PyQt4 Minimizar a la bandeja] (http://stackoverflow.com/questions/758256/pyqt4-minimize-to-tray) – katrielalex
@katrielalex Creo él se refiere al ícono de la barra de tareas y no al icono de la bandeja. – user225312
@PulpFiction: sí; la forma en que "minimizar a la bandeja" es ocultar el ícono de la barra de tareas y crear un icono de bandeja. – katrielalex