setWindowFlagsの種類

Tips,PySide,PySide2,Python,Qt,Mayapyside,python

Qt(PySide/PyQt)のwidgetには色々なWindowTypeを指定することができますが
主に使用するWindowTypeのタイプはデフォルトのQt.Widgetをはじめ、11種類程度存在しています

Qt.Widget
Qt.Window
Qt.Dialog
Qt.Sheet
Qt.Drawer
Qt.Popup
Qt.Tool
Qt.ToolTip
Qt.SplashScreen
Qt.Desktop
Qt.SubWindow


WindowTypeをmayaで表示すると上の画像のようになります
※ Qt.Desktopはウィジェットがデスクトップとして示すWindowTypeですがmayaでは使用できません

setWindowFlagsの複数設定

setWindowFlagsを複数設定する場合、setWindowFlagsに設定したいタイプを指定します
ここで注意する点が設定するタイプを区切るときに【,】を使うのではなく【|】を使用する必要があります

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

try:
   from PySide.QtGui import *
   from PySide.QtCore import *
except:
   from PySide2.QtGui import *
   form PySide2.QtWidgets import *
   from PySide2.QtCore import *

class example(QMainWindow):
    def __init__(self):
        super(example, self).__init__()
        self.setWindowFlags(Qt.Dialog|Qt.WindowStaysOnTopHint)
        self.initUI()

    def initUI(self):
        self.show()

def main():
    app = QApplication.instance()
    ex = example()
    sys.exit()
    app.exec_()

if __name__ == '__main__':
    main()

上記のコードはQt.DialogとQt.WindowStaysOnTopHint(ウィンドウを常に上に表示するタイプ)を使用したサンプルコードです

ここでは、必要なインポートを提供します。基本的なGUIウィジェットはQtGuiモジュール内にあります。

self.setWindowFlags(Qt.Dialog|Qt.WindowStaysOnTopHint)

QMainWindowのclassにsetWindowFlagsでQt.DialogとQt.WindowStaysOnTopHintを適応しています

この他にもwindowをフレームレスにするQt.FramelessWindowHintなどがあります


※ 詳しい情報は各ドキュメントを参照してください
PySide.QtCore.PySide.QtCore.Qt.WindowType
PySide2.QtCore.PySide2.QtCore.Qt.WindowType
enum Qt::WindowType flags Qt::WindowFlags