PyQt5 QMainwindowとQDialogの表示

2020/01/30 categories:PyQt5| tags:Python|PyQt5|QMainwindow|QDialog|

PyQt5でメインウィンドウからダイアログを表示して、ダイアログから値を受け取るサンプルを作ってみました。

メインウィンドウ

QMainWindowにメニューとテキストブラウザを設置 メニューはSettingのみ

ダイアログ

ダイアログボタンボックス付きのQDialogにテキストエディットを設置

値の受け渡し

def plane_text(self):
    result = self.exec()
    plane_text = self.ui.textEdit.toPlainText()
    return (plane_text, result == QtWidgets.QDialog.Accepted)

ダイアログを表示して、実行結果とテキストエディットのテキストを返す処理としています。self.exec()はAcceptedかRejectedが返ってくるのでresult == QtWidgets.QDialog.AcceptedとしてTrueかFalseが返るようにしています。

plane_text, result = SettingDialog(self).plane_text()

上記のようにダイアログを表示して値を取得します。

ソースコード

ソースコードはgithubにあります

main.py

import sys
from mainwindow import Ui_MainWindow
from setting_dialog import Ui_Dialog
from PyQt5 import QtWidgets, QtCore

class SettingDialog(QtWidgets.QDialog):
    def __init__(self, parent):
        super().__init__(parent)
        
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)

    def plane_text(self):
        result = self.exec()
        plane_text = self.ui.textEdit.toPlainText()
        return (plane_text, result == QtWidgets.QDialog.Accepted)

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, app):
        super().__init__()
        
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.actionSetting.triggered.connect(self.show_setting_dialog)

    def show_setting_dialog(self):
        plane_text, result = SettingDialog(self).plane_text()
        if result:
            self.ui.textBrowser.setPlainText(plane_text)
 
def main():
    app = QtWidgets.QApplication(sys.argv)
    window = MainWindow(app)
    window.show()
    app.exec_()
 
if __name__ == '__main__':
    main()

Share post

Related Posts

コメント