Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使一个窗口在不最大化的情况下占据整个屏幕?_Python_Qt_Pyqt_Pyside - Fatal编程技术网

Python 如何使一个窗口在不最大化的情况下占据整个屏幕?

Python 如何使一个窗口在不最大化的情况下占据整个屏幕?,python,qt,pyqt,pyside,Python,Qt,Pyqt,Pyside,我正在使用Qt编写python 我想创建应用程序窗口(带装饰)以占据整个屏幕大小。目前这是我的代码: avGeom = QtGui.QDesktopWidget().availableGeometry() self.setGeometry(avGeom) 问题是它忽略了窗口装饰,所以框架更大。。。我在谷歌上搜索了一下,发现了这个: 这似乎表明我需要将frameGeometry设置为avGeom,但我还没有找到一种方法。此外,在上面链接的评论中,它说我想要的可能甚至不可能,因为程序在运行之前无

我正在使用Qt编写python

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

avGeom = QtGui.QDesktopWidget().availableGeometry()
self.setGeometry(avGeom)
问题是它忽略了窗口装饰,所以框架更大。。。我在谷歌上搜索了一下,发现了这个:

这似乎表明我需要将frameGeometry设置为
avGeom
,但我还没有找到一种方法。此外,在上面链接的评论中,它说我想要的可能甚至不可能,因为程序在运行之前无法设置框架几何体。。。如果是这样的话,我只想确认我的问题是无法解决的

编辑:

所以我对代码做了一些修改,这就给出了我想要的。。。然而,数字24基本上是通过反复试验,直到窗口标题可见。。。。我想找个更好的方法。。。它是独立于窗口管理器的

avGeom = QtGui.QDesktopWidget().availableGeometry()
avGeom.setTop(24)
self.setGeometry(avGeom)
现在我可以做我想做的,但纯粹是尝试和错误

运行Ubuntu,使用Spyder作为IDE

感谢使用此窗口的大小:

#!/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_())

我总是发现从QMainWindow类继承特别有用。像这样:

import sys
from PySide.QtGui import *
from PySide.QtCore import *


class Some_APP(QMainWindow):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        ### this line here is what you'd be looking for
        self.setWindowState(Qt.WindowMaximized)
        ###
        self.show()


def main():
    app = QApplication(sys.argv)
    some_app = Some_APP()
    sys.exit(app.exec_())


if __name__ == "__main__":
    main()

不,这没用。。。现在发生的是,小部件是整个屏幕的大小,而不是整个屏幕减去菜单栏(开始类型按钮始终在屏幕上)。。。理想情况下,我希望所有内容减去菜单栏减去标题所需的空间(也称为装饰)@evan54签出我的,我修改了它以隐藏标题栏(注意使用了
可用几何体
而不是
屏幕几何体
)。eee仍然不是我想要的。。。我真的不想隐藏标题栏,我只想要我设置的几何图形,因为有一个标题栏。。。对不起,我弄糊涂了you@evan54我的答案中没有设置窗口标志的部分是否解决了您的问题?否。。。我遇到的问题是,它将使小部件大小正确,但是,窗口=小部件+标题比屏幕大。。。如果你看看我发布的链接,我想你会明白我的意思,根据我的说法,这就是答案!