#やりたいこと
Qthread で呼び出したProcess_code_text_class内で別class AK003で定義した変数を使いたい
具体的には"Executeボタンが押されたらテキスト内の文字列をprintfで出力したい"
#問題
以下コードだとテキストに文字列を入力しても値が出力されない。
![
python
1# -*- coding: utf-8 -*- 2""" 3Created on Tue Jun 16 19:37:35 2020 4プログラムmemo 5note : Qt desinerでMainWindowでguiを作成したのでUi_Formと異なる 6note: importした.pyファイル上のオブジェクトを呼び出すときはクラス名を付けること 7@author: asahi 8""" 9import os #pathからファイル名取得するときよう 10import sys #システムモジュール 11 12from PyQt5.QtCore import QThread, QTimer, QEventLoop # 追加 13from PyQt5 import QtWidgets,QtCore 14from PyQt5.QtWidgets import QMainWindow 15from PyQt5.QtWidgets import QMessageBox 16 17from PyQt5 import QtCore, QtGui, QtWidgets 18 19class Ui_MainWindow(object): 20 def setupUi(self, MainWindow): 21 MainWindow.setObjectName("MainWindow") 22 MainWindow.resize(300, 300) 23 self.centralwidget = QtWidgets.QWidget(MainWindow) 24 self.centralwidget.setObjectName("centralwidget") 25 self.frame = QtWidgets.QFrame(self.centralwidget) 26 self.frame.setGeometry(QtCore.QRect(10, 0, 261, 221)) 27 self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel) 28 self.frame.setFrameShadow(QtWidgets.QFrame.Raised) 29 self.frame.setObjectName("frame") 30 self.plainTextEdit_code_text = QtWidgets.QPlainTextEdit(self.frame) 31 self.plainTextEdit_code_text.setGeometry(QtCore.QRect(20, 60, 231, 151)) 32 self.plainTextEdit_code_text.setObjectName("plainTextEdit_code_text") 33 self.label_2 = QtWidgets.QLabel(self.frame) 34 self.label_2.setGeometry(QtCore.QRect(20, 40, 71, 16)) 35 font = QtGui.QFont() 36 font.setFamily("Segoe UI") 37 self.label_2.setFont(font) 38 self.label_2.setObjectName("label_2") 39 self.pushButton__execute = QtWidgets.QPushButton(self.frame) 40 self.pushButton__execute.setGeometry(QtCore.QRect(140, 10, 111, 23)) 41 font = QtGui.QFont() 42 font.setFamily("Segoe UI") 43 self.pushButton__execute.setFont(font) 44 self.pushButton__execute.setObjectName("pushButton__execute") 45 self.frame_4 = QtWidgets.QFrame(self.frame) 46 self.frame_4.setGeometry(QtCore.QRect(10, 290, 471, 291)) 47 self.frame_4.setFrameShape(QtWidgets.QFrame.StyledPanel) 48 self.frame_4.setFrameShadow(QtWidgets.QFrame.Raised) 49 self.frame_4.setObjectName("frame_4") 50 self.pushButton_read_picture_2 = QtWidgets.QPushButton(self.frame_4) 51 self.pushButton_read_picture_2.setGeometry(QtCore.QRect(20, 10, 111, 23)) 52 font = QtGui.QFont() 53 MainWindow.setCentralWidget(self.centralwidget) 54 self.menubar = QtWidgets.QMenuBar(MainWindow) 55 self.menubar.setGeometry(QtCore.QRect(0, 0, 508, 21)) 56 self.menubar.setObjectName("menubar") 57 self.menuFile = QtWidgets.QMenu(self.menubar) 58 self.menuFile.setObjectName("menuFile") 59 MainWindow.setMenuBar(self.menubar) 60 self.statusbar = QtWidgets.QStatusBar(MainWindow) 61 self.statusbar.setObjectName("statusbar") 62 MainWindow.setStatusBar(self.statusbar) 63 self.menubar.addAction(self.menuFile.menuAction()) 64 65 self.retranslateUi(MainWindow) 66 self.pushButton__execute.clicked.connect(MainWindow.click_execute) 67 QtCore.QMetaObject.connectSlotsByName(MainWindow) 68 69 def retranslateUi(self, MainWindow): 70 _translate = QtCore.QCoreApplication.translate 71 MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) 72 self.pushButton__execute.setText(_translate("MainWindow", "Execute")) 73 74class AK003(QMainWindow,Ui_MainWindow): 75 def __init__(self,parent=None): 76 super(AK003, self).__init__(parent) 77 self.ui = Ui_MainWindow() 78 self.ui.setupUi(self) 79 80 81 def click_execute(self): 82 self.process_code_text = Process_code_text_class() 83 self.process_code_text.start() 84 85 86 87 88#コード実行用サブクラス 89class Process_code_text_class(QThread): 90 def __init__(self,parent=None): 91 super(Process_code_text_class, self).__init__(parent) 92 93 #self.ui = Ui_MainWindow() 94 #self.ui.setupUi(self) 95 self.ak003 = AK003() 96 97 98 99 def run(self): 100 #code_text解析処理 101 #code textの文字列取得 102 code = self.ak003.ui.plainTextEdit_code_text.toPlainText() 103 print(code) 104 105 106 107#メイン関数 108if __name__ == '__main__': 109 app = QtWidgets.QApplication(sys.argv) 110 window = AK003() 111 window.show() 112 sys.exit(app.exec_()) 113
#質問
上記問題を解決するためにアドバイスいただけますでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/07 09:18