LoginSignup
1
0

More than 1 year has passed since last update.

PyQt5のチュートリアルを動かす ➆ QDialog Class

Posted at

はじめに

前回は基本のwidgetについてのまとめでした。

今回はQDialogクラスについてです。

内容

QDialogはユーザーからのリスポンスを得る為に主に使用され、最上位画面に出てきます。

PyQt APIにはInputDialogFileDialogFontDialogなどの多くの拡張済みのダイアログウィジェットが用意されているようです。

以下の例では,WindowModality属性がモーダルかモードレスカアを決定します。(※モーダレスだとダイアログが閉じるまで,元のウィンドウに切り替わらなくなるそうです。)

ユーザーがEscapeキーを押すとQDialog.reject()メソッドによってダイアログが破棄されるそうです。

dialog.py
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

def window():
   app = QApplication(sys.argv)
   w = QWidget()
   btn = QPushButton(w)
   btn.setText("Hello World!")
   btn.move(100,50)
   btn.clicked.connect(showdialog)
   w.setWindowTitle("PyQt Dialog demo")
   w.show()
   sys.exit(app.exec_())

def showdialog():
   dlg = QDialog()
   b1 = QPushButton("ok",dlg)
   b1.move(50,50)
   dlg.setWindowTitle("Dialog")
   dlg.setWindowModality(Qt.ApplicationModal)
   dlg.exec_()

if __name__ == '__main__':
   window()

実行すると以下のようなwindowが表示されます。

Screenshot from 2021-12-02 12-11-42.png

そしてボタンを押すとダイアログwindowが表示されます。

Screenshot from 2021-12-02 12-12-03.png

さいごに

ダイアログにも色々な種類のものが用意されており、またモーダル/モードレスなどの設定も可能だと言うことが分かりました。
良く使うGUIでのダイアログの作り方の基本がわかりしました。
ただダイアログから親へのシグナルの受け渡しやデータ共有の方法等気になるところですね。普通にsignal/slotやglobal変数等でできるのでしょうか??
今後こういった部分にも注目していきたいと思います。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0