Domanda

Mi piacerebbe fare un pannello simile applicazione utilizzando PyQt4 per Linux. per questo ho bisogno della finestra ho creato:

  • essere Undecorated
  • di avere spazio riservato
  • a comparire su tutte le aree di lavoro

la documentazione i 've avuto l'idea che dovrei usare QtWindowFlags. Ma non ho idea di come farlo. Inoltre credo che ci dovrebbe essere un suggerimento da qualche parte Qt.WindowType dicendo la WM la finestra di un'applicazione "dock". Ho fatto questo con pygtk seguente questa discussione , ma qui con Qt non lo faccio davvero sapere come gestire questo. (Ho bisogno di Qt per la sua capacità di tema application / pelle più facilmente.)

Di seguito è riportato il codice attuale che ho fatto (niente di straordinario).

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()

Qualcuno può aiutarmi con questo? Grazie:)

È stato utile?

Soluzione 3

La soluzione è quella di utilizzare Python-Xlib, ed è stata descritta in una risposta su un modo universale per riservare lo spazio dello schermo su X .

Altri suggerimenti

Leggi sulla proprietà QWidget.windowFlags: http://doc.qt.nokia.com /4.7/qwidget.html#windowFlags-prop

Esempio:

>>> 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()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top