PySide (Qt for Python) は、Qt(キュート)の Python バインディングで、GUI などを構築するためのクロスプラットフォームなライブラリです。Linux/X11, macOS および Microsoft Windows をサポートしています。配布ライセンスは LGPL で公開されています。
今回のテーマ
- GUI のウィンドウサイズを固定します。
下記の OS 環境で動作確認をしています。
![]() |
Fedora Workstation 39 | x86_64 |
Python | 3.12.2 | |
PySide6 | 6.6.2 |
PySide6 で、ウィンドウのサイズを固定するには次のようにします。
self .setFixedSize( 600 , 400 ) |
これで、ウィンドウのサイズは 600 x 400 に固定され、変更できなくなります。
ひとつ問題があります。作成した GUI のウィンドウの最小サイズをどのように入手するのか、ということです。そんなとき、下記のように sizeHint メソッドを利用すれば簡単に解決できます。
self .setFixedSize( self .sizeHint()) |
サンプルを以下に示します。
qt_gridlayout_top_left_resize.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# coding: utf-8 | |
import sys | |
from PySide6.QtCore import Qt | |
from PySide6.QtWidgets import ( | |
QApplication, | |
QGridLayout, | |
QPushButton, | |
QWidget, | |
) | |
class Example(QWidget): | |
def __init__(self): | |
super().__init__() | |
self.setStyleSheet('QWidget {background-color: gray;}') | |
self.setWindowTitle('QGridLayoout sample') | |
layout = QGridLayout() | |
layout.setSpacing(5) | |
layout.setAlignment( | |
Qt.AlignmentFlag.AlignTop | Qt.AlignmentFlag.AlignLeft | |
) | |
self.setLayout(layout) | |
y_max = 3 | |
x_max = 3 | |
for y in range(y_max): | |
for x in range(x_max): | |
v = y * x_max + x + 1 | |
but = QPushButton(str(v)) | |
but.setStyleSheet(""" | |
QPushButton { | |
background-color: white; | |
padding: 1em 2em; | |
} | |
""") | |
layout.addWidget(but, y, x) | |
self.setFixedSize(self.sizeHint()) | |
def main(): | |
app = QApplication(sys.argv) | |
ex = Example() | |
ex.show() | |
sys.exit(app.exec()) | |
if __name__ == '__main__': | |
main() |
qt_gridlayout_top_left_resize.py の実行例
なぜこのような簡単なテーマを備忘録にするのかというと、それは、自分が長い間 Tcl/Tk で GUI アプリを作っていたからです。Tk では、ウィンドウのサイズ変更を wm コマンドで制御しているため [1]、そのやり方にとらわれてしまって PySide6 ではどうするのか、かなり長い間解らなかったからです。
wm resizable window ?width height? |
結局、自分のための備忘録なのです。🙇🏻
参考サイト
- wm resizable [Tcl/Tk manual]

にほんブログ村
#オープンソース

0 件のコメント:
コメントを投稿