0

OSX 10.8でpython 2.7.5を使用しています。私は PySide を学んでいて、簡単な GUI を構築しようとしています。

パスの選択や機能の実行に使用されるボタン (WOAAA!) を使用することができました。

pathBtn = QtGui.QPushButton("FITS file path", self)
pathBtn.setToolTip('Choose the <b>path</b> to your FITS file')
pathBtn.clicked.connect(essai)
pathBtn.resize(pathBtn.sizeHint())
pathBtn.move(200, 100) 

私の問題は、プログラムの実行中にマウスカーソルでウィンドウのサイズを変更すると、ボタンが動かず、サイズの変化に適応しないことです。

私はいくつかの答えを見つけようとしました(ええとグーグル)、「QVBoxLayout」は私が望むことを行うべきであることを理解しています(ある種の「動的」ポジショニング、そのための特定の名前があるかどうかわかりません)が、私はしませんでしたその構文も使用方法も理解していません...

どんな助けでも大歓迎です!

4

1 に答える 1

1

Qt ウィジェットでは、レイアウトとウィジェットのサイズ ヒントによってサイズ変更方法が決まります。ウィジェットをレイアウトする一般的な手順は次のとおりです (例):

dialog = QDialog()
layout = QVBoxLayout()
label = QLabel('This is a label')
edit = QLineEdit('This is a line edit box')
layout.addWidget(label)
layout.addWidget(edit)
dialog.setLayout(layout)

(*このコードを職場でテストすることはできません (Qt/PySide はありません)。この「疑似コード」を検討してください :-)

これにより、ラベルと編集ボックスを備えたダイアログ ウィジェットが作成されます。ダイアログ ウィジェットのサイズを変更すると、ウィジェットのレイアウトとサイズ変更のプロパティによって、ラベルと編集ボックスが適切にサイズ変更されます。水平方向は両方とも最大限に拡張されますが、垂直方向は編集が同じサイズを維持し、ラベルが残りのスペースをすべて占めます。これは、編集ボックスのサイズ変更のヒントが、その高さ (つまり、1 行のテキスト) を維持したいと言っているためです。

レイアウトを指定しない場合、ウィジェット (ボタン、ラベル) は親ウィジェットのサイズを変更しても何もしません。したがって、解決策は確かに QVBoxLayout です。上記のように使用してください。

ところで、より複雑なレイアウトの場合は、Qt で提供される Designer ツールを使用することをお勧めします。このツールを使用すると、GUI を事前に確認してテストできます。

于 2013-07-11T10:28:14.560 に答える