Qt for Python (PySide2) は、Qt の Python バインディングを提供するプロジェクトで、オープンソース版の Qt と同じく、LGPLv3 / GPLv3 と Qt commercial license(商用ライセンス)が適用されています。最近はクロスプラットフォーム用の GUI ライブラリとして使うことが多くなりました。
頻度は多くありませんが、GUI でウィンドウのリサイズをできなくするニーズがあります。
このような場合、OS が Microsoft Windows であれば、下記のようにすれば、ウィンドウのリサイズを無効にできます。
class Example(QWidget):
def __init__(self):
super().__init__()
self.setWindowFlags(Qt.MSWindowsFixedSizeDialogHint)
self.show()
一方、Linux の GNOME デスクトップ環境で同じ方法を試すと、エラーにはならないもののウィンドウのリサイズを無効にできません。参考サイト [1] にヒントがあったので、サンプルを作って備忘録にしました。
本ブログ記事では下記の OS 環境で動作確認をしています。
Fedora 33 (Workstation Edition) | x86_64 |
QLayout クラスを継承した QVBoxLayout のようなジオメトリマネージャを使ってウィジェットを配置した後、vbox.setSizeConstraint(QLayout.SetFixedSize) のようにサイズを固定する指定をします。ウィンドウのタイトルバーで「最小化」と「閉じる」ボタンのみを表示するように指定します。
def __init__(self): super().__init__() : : vbox = QVBoxLayout(self) vbox.addWidget(...) vbox.setSizeConstraint(QLayout.SetFixedSize) : : self.setLayout(vbox) self.setWindowTitle('QPixmap') self.setWindowFlags(Qt.WindowMinimizeButtonHint | Qt.WindowCloseButtonHint) self.show()
以下にサンプルを紹介します。
GNOME では「最大化」「最小化」のボタンはデフォルトで表示されませんが、機能は存在していて、設定が反映されています。
サンプルの JPEG 画像 sample_picture.jpg は、ファイル名さえ同じであれば何でも良いのですが、何のため、実行例で使用した画像は下記から入手できますので、必要に応じてご利用ください。qt_pixmap.py と同じパス(フォルダ)に保存します。
参考サイト
- c++ - how can I fully disable resizing a window including the resize icon when the mouse hovers the border? - Stack Overflow [2013-05-21]
にほんブログ村
0 件のコメント:
コメントを投稿