6

Qtを使用してPythonで書いています

全画面サイズを占めるアプリケーション ウィンドウ (装飾付き) を作成したいと考えています。現在、これは私が持っているコードです:

avGeom = QtGui.QDesktopWidget().availableGeometry()
self.setGeometry(avGeom)

問題は、ウィンドウの装飾を無視するため、フレームが大きくなることです...私はグーグルで検索しましたが、これは見つかりませんでした:

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)

今は自分のやりたいことができるようになりましたが、純粋に試行錯誤の結果でした

Spyder を IDE として使用して Ubuntu を実行する

ありがとう

4

2 に答える 2

10

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_())
于 2013-03-29T13:07:29.340 に答える
2

私は、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()
于 2015-11-11T21:38:45.053 に答える