PYQT4:予約済みのスペースでアンダーコアートウィンドウを作成する方法

StackOverflow https://stackoverflow.com/questions/5829585

質問

Linux用のPyQT4を使用して、パネルのようなアプリケーションを作成したいと思います。これには、作成したウィンドウが必要です。

  • 装飾されていない
  • スペースを確保するために
  • すべてのワークスペースに表示されます

読書から ドキュメント qtwindowflagsを使用する必要があるという考えがあります。しかし、私はそれをどのように行うかについての手がかりがありません。また、WMにウィンドウの「ドック」アプリケーションをwmに伝えるqt.windowtypeのヒントがあるべきだと思います。 Pygtkをフォローしてこれを作成しました このスレッド, 、しかし、ここではQTでは、これを処理する方法が本当にわかりません。 (テーマ/スキンアプリケーションをより簡単にテーマにする能力にはQTが必要です。)

以下は私が作った現在のコードです(並外れたものはありません)。

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

誰かがこれで私を助けることができますか?ありがとう :)

役に立ちましたか?

解決 3

解決策はpython-xlibを使用することであり、で説明されています xの画面スペースを予約する普遍的な方法に関する答え.

他のヒント

qwidget.windowflagsプロパティについて読む: http://doc.qt.nokia.com/4.7/qwidget.html#windowflags-prop

例:

>>> 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()
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top