2011-04-29 85 views
0

我想使用PyQt4 for Linux制作面板式应用程序。为了这个,我需要我创建的窗口:PyQt4:如何使具有保留空间的底层窗口

  • 是未经修饰的
  • 已经预留了空间
  • 出现在所有工作区

从阅读the documentation我有想法,我应该使用QtWindowFlags。但我不知道如何做到这一点。另外我相信应该有一个Qt.WindowType暗示告诉WM窗口是一个“dock”应用程序。我已经用pygtk在this thread之后做了这个,但是在这里用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() 

任何人都可以帮助我吗?谢谢:)

回答

6

读取有关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() 
+0

感谢您的支持。我还没有发现任何标志在Qt4文档中的屏幕上保留空间。 Google也不提供任何提示。 (也许我不是很好地配制它) – Benjamin 2011-05-07 10:53:59

+0

我还没有看到任何有关Qt中保留空间或工作区的信息..您可能需要直接访问您的窗口管理器。 – Luke 2011-05-12 15:32:21

+0

这就是我所担心的,所以我已经重新制定了[这个问题的一般用途](http://stackoverflow.com/questions/5949230/python-tell-x-to-reserve-screen-space-for-application)。不管怎么说,还是要谢谢你。 – Benjamin 2011-05-12 16:54:01

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