[英]PyQt4: how to make undercorated window with reserved space
我想为 Linux 使用 PyQt4 制作一个类似面板的应用程序。 为此,我需要我创建的 window:
通过阅读文档,我知道我应该使用 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()
谁能帮我这个? 谢谢:)
阅读 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 上保留屏幕空间的通用方法的答案中进行了描述。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.