[PyQt] Dialog
Dialog란 main window에서 추가 창을 띄울 때 사용하는 기능을 말한다.
Signal
기본적으로 위와 같은 구조로 main window와 dialog 사이에 통신을 수행한다. Signal을 주고 받을 때 크게 3 종류로 구성된다.
Signal | Modality | Return Timing |
---|---|---|
exec() | Modal | 닫히면 즉시 |
open() | Modal | 열리고 즉시 |
show() | Depends on setWindowModality() | 열리고 즉시 |
보면 signal 별로 modality가 달라지고 main window로 return signal timing이 달라진다.
구성
Dialog가 없는 경우 main window에 해당하는 UI (User Interface)만 필요했지만, dialog가 들어가는 경우 main window와 dialog 각각에 대한 UI가 필요하다.
Dialog object를 생성해서 window를 만드는 방법은 다음과 같다.
class Form(QMainWindow, Ui_MainWindow): def __init__(self): super().__init__() self.setupUi(self) self.btnExec.clicked.connect(self.exec_dialog) def exec_dialog(self): print('******** exec clicked *******') dlg = dlgForm(self) dlg.accepted.connect(self.dlg_accept) dlg.rejected.connect(self.dlg_reject) dlg.finished.connect(self.dlg_finish) r = dlg.exec() class dlgForm(QDialog, Ui_Dialog): def __init__(self, parent=None, flag=Qt.Dialog): super().__init__(parent, flag) self.setupUi(self) if __name__ == '__main__': app = QApplication(sys.argv) w = Form() w.show() sys.exit(app.exec_())