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()