Python 如何使一个窗口在不最大化的情况下占据整个屏幕?
我正在使用Qt编写python 我想创建应用程序窗口(带装饰)以占据整个屏幕大小。目前这是我的代码:Python 如何使一个窗口在不最大化的情况下占据整个屏幕?,python,qt,pyqt,pyside,Python,Qt,Pyqt,Pyside,我正在使用Qt编写python 我想创建应用程序窗口(带装饰)以占据整个屏幕大小。目前这是我的代码: avGeom = QtGui.QDesktopWidget().availableGeometry() self.setGeometry(avGeom) 问题是它忽略了窗口装饰,所以框架更大。。。我在谷歌上搜索了一下,发现了这个: 这似乎表明我需要将frameGeometry设置为avGeom,但我还没有找到一种方法。此外,在上面链接的评论中,它说我想要的可能甚至不可能,因为程序在运行之前无
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我的答案中没有设置窗口标志的部分是否解决了您的问题?否。。。我遇到的问题是,它将使小部件大小正确,但是,窗口=小部件+标题比屏幕大。。。如果你看看我发布的链接,我想你会明白我的意思,根据我的说法,这就是答案!