Frage

Ich möchte eine panelähnliche Anwendung mit PYQT4 für Linux erstellen. Dafür brauche ich das Fenster, das ich erstellt habe:

  • nicht dekoriert sein
  • Raum reserviert haben
  • in allen Arbeitsbereichen erscheinen

Vom Lesen die Dokumentation Ich habe die Idee, dass ich Qtwindowflags verwenden sollte. Aber ich habe keine Ahnung, wie das geht. Ich glaube auch, dass es einen qt.windowtype -Hinweis geben sollte, irgendwo irgendwohin, was dem Fenster eine "Dock" -Anwendung ist. Ich habe das mit pygtk folgt gemacht Dieser Thread, Aber hier mit QT weiß ich nicht wirklich, wie ich damit umgehen soll. (Ich brauche QT für die Fähigkeit, einfach zu themen-/hautanwendbar.)

Unten ist der aktuelle Code, den ich erstellt habe (nichts Außergewöhnliches).

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

Kann mir jemand dabei helfen? Vielen Dank :)

War es hilfreich?

Lösung 3

Die Lösung besteht darin, Python-xlib zu verwenden, und es wurde in beschrieben Eine Antwort auf universelle Weise, um den Bildschirmraum auf x zu reservieren.

Andere Tipps

Lesen Sie mehr über die Eigenschaft qwidget.windowflags: http://doc.qt.nokia.com/4.7/qwidget.html#windowflags-prop

Beispiel:

>>> 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()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top