PyQt4: как сделать undercorated окно с зарезервированным пространством

Я хотел бы сделать приложение, подобное панели, используя PyQt4 для Linux. для этого мне нужно окно, которое я создал:

  • быть неупорядоченным
  • зарезервировать место
  • появляться на всех рабочих пространствах

От чтения документации у меня появилась идея, что я должен использовать QtWindowFlags. Но я не знаю, как это сделать. Также я считаю, что должен быть подсказкой Qt.WindowType, где-то сообщая WM-окну приложение «док-станции». Я сделал это с 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() 

Кто-нибудь может мне с этим помочь? Благодаря 🙂

  • python 2.7: не может нажимать на windows "bash: pip: command not found"
  • Как перечислить все файлы каталога?
  • MailChimp API 3.0 пакетная / массовая подписка
  • не удается установить matplotlib с помощью pip
  • См. Несколько моделей в представлении / шаблоне в Django
  • построение автомасштабированных подзаговоров с фиксированными пределами в matplotlib
  • Индекс индекса Elasticsearch в кусках с использованием PyEs
  • Python urllib2 Основная проблема с Auth
  • 3 Solutions collect form web for “PyQt4: как сделать undercorated окно с зарезервированным пространством”

    Читайте о свойстве 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() 

    Решение заключается в использовании Python-Xlib, и это было описано в ответе на универсальном способе резервирования пространства экрана на X.

    Python - лучший язык программирования в мире.