PYQT4:予約済みのスペースでアンダーコアートウィンドウを作成する方法
-
27-10-2019 - |
質問
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()
所属していません StackOverflow