如何在没有最大化的情况下制作占据全屏的窗口?

eva*_*n54 1 python qt pyqt pyside

我正在使用Qt在python中编写

我想创建应用程序窗口(带有装饰)以占据整个屏幕大小.目前这是我的代码:

avGeom = QtGui.QDesktopWidget().availableGeometry()
self.setGeometry(avGeom)
Run Code Online (Sandbox Code Playgroud)

问题是它忽略了窗口装饰,所以框架更大...我用Google搜索,什么不是,发现这个:

http://harmattan-dev.nokia.com/docs/library/html/qt4/application-windows.html#window-geometry

这似乎表明我需要将frameGeometry设置为,avGeom但是我还没有找到办法做到这一点.此外,在上面链接的评论中,它说我所追求的可能是不可能的,因为程序无法在运行之前设置frameGeometry ...如果是这种情况我只是想确认我的问题是不可解决的.

编辑:

所以我玩了一些代码,这给了我想要的东西......但是数字24基本上是通过试验和错误,直到窗口标题可见....我想要一些更好的方法来做到这一点...窗口管理员独立..

avGeom = QtGui.QDesktopWidget().availableGeometry()
avGeom.setTop(24)
self.setGeometry(avGeom)
Run Code Online (Sandbox Code Playgroud)

现在我可以做我想做的事,但纯粹是出于反复试验

运行Ubuntu,使用Spyder作为IDE

谢谢

小智 6

使用QtGui.QApplication().desktop().availableGeometry()该窗口的大小:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from PyQt4 import QtGui, QtCore

class MyWindow(QtGui.QWidget):
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)

        self.pushButtonClose = QtGui.QPushButton(self)
        self.pushButtonClose.setText("Close")
        self.pushButtonClose.clicked.connect(self.on_pushButtonClose_clicked)

        self.layoutVertical = QtGui.QVBoxLayout(self)
        self.layoutVertical.addWidget(self.pushButtonClose)

        titleBarHeight = self.style().pixelMetric(
            QtGui.QStyle.PM_TitleBarHeight,
            QtGui.QStyleOptionTitleBar(),
            self
        )

        geometry = app.desktop().availableGeometry()
        geometry.setHeight(geometry.height() - (titleBarHeight*2))

        self.setGeometry(geometry)

    @QtCore.pyqtSlot()
    def on_pushButtonClose_clicked(self):
        QtGui.QApplication.instance().quit()

if __name__ == "__main__":
    import sys

    app = QtGui.QApplication(sys.argv)
    app.setApplicationName('MyWindow')

    main = MyWindow()
    main.show()

    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)