Pregunta

Me gustaría hacer una aplicación tipo panel usando PYQT4 para Linux. Para esto necesito la ventana que creé:

  • estar sin decoración
  • tener espacio reservado
  • aparecer en todos los espacios de trabajo

De leer la documentación Tengo la idea de que debería usar qtwindowflags. Pero no tengo idea de cómo hacer eso. También creo que debería haber una pista QT.WindowType en algún lugar decirle a la WM que la ventana es una aplicación de "muelle". He hecho esto con Pygtk siguiendo este hilo, pero aquí con QT realmente no sé cómo manejar esto. (Necesito QT para su capacidad de aplicación de temática/piel más fácilmente).

A continuación se muestra el código actual que hice (nada extraordinario).

import sys
from PyQt4 import QtGui

class Panel(QtGui.QWidget):
def __init__(self, parent=None): ## should the QtWindowFlag be here?
    QtGui.QWidget.__init__(self, parent) ## should the QtWindowFlag be there as well?

    self.setWindowTitle('QtPanel')
    self.resize(QtGui.QDesktopWidget().screenGeometry().width(), 25)
    self.move(0,0)

def main():
    app = QtGui.QApplication(sys.argv)
    panel = Panel()
    panel.show()
    sys.exit(app.exec_())
    return 0

if __name__ == '__main__':
    main()

Puede alguien ayudarme con esto? Gracias :)

¿Fue útil?

Solución 3

La solución es usar python-xlib, y se ha descrito en Una respuesta sobre una forma universal de reservar el espacio de pantalla en X.

Otros consejos

Lea sobre la propiedad QWidget.WindowFlags: http://doc.qt.nokia.com/4.7/qwidget.html#windowflags-prop

Ejemplo:

>>> from PyQt4 import QtGui, QtCore
>>> app = QtGui.QApplication([])
>>> win = QtGui.QMainWindow()
>>> win.setWindowFlags(win.windowFlags() | QtCore.Qt.FramelessWindowHint)
>>> win.show()
import sys
from PyQt4 import QtGui, QtCore


class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):               

        qbtn = QtGui.QPushButton('Quit', self)
        #qbtn.clicked.connect(QtCore.QCoreApplication.instance().quit)
        qbtn.clicked.connect(self.test)
        qbtn.resize(qbtn.sizeHint())
        qbtn.move(50, 50)       

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Quit button')    
        self.setWindowFlags(self.windowFlags() | QtCore.Qt.FramelessWindowHint)
        self.show()

    def test(self):
      print "test"

def main():

    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top