0

Linux用のPyQt4を使ってパネルのようなアプリケーションを作りたいです。このために私は私が作成したウィンドウが必要です:

  • 装飾されていない
  • スペースを予約する
  • すべてのワークスペースに表示されます

ドキュメントを読んだことから、QtWindowFlagsを使用する必要があるという考えがわかりました。しかし、私にはそれを行う方法についての手がかりがありません。また、ウィンドウが「ドック」アプリケーションであることを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()

誰かがこれを手伝ってくれますか?ありがとう :)

4

3 に答える 3

5

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()
于 2011-05-06T15:42:22.687 に答える
1
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()
于 2013-11-07T00:07:12.950 に答える
0

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

于 2011-06-03T20:24:37.187 に答える