Привет.
Нигде не могу найти инфу, как обновлять progressBar из обычного питоновского потока (не Qt)
Да и вообще как обращаться к GUI из потоков. Например показать QMessageBox.
Если подбросите наипростейщий пример, буду очень признателен.
class MyThread(QThread):
def __init__(self, parent=None):
QThread.__init__(self, parent)
countSignal = pyqtSignal(str)
def run(self):
#Тут вылетает ошибка - "CountThread has no attribute listOfTables"
selectedTable = self.listOfTables.currentItem().text()
msg = (selectedTable)
self.emit(countSignal(msg))
def __del__(self):
self.exiting = True
self.wait()
class MForm(QMainWindow):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.ui = Ui_MainForm()
self.ui.setupUi(self)
self.ui.pushButton.clicked.connect(self.pushButton_OnClick)
def pushButton_OnClick(self):
self.t = MyThread()
self.t.start()
self.cntThread.countSignal.connect(self.msgBox)
def msgBox(self, msg):
QMessageBox.information(self, "Test Program", msg, 1, 0)
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
myapp = MForm()
myapp.show()
sys.exit(app.exec_())
SHSНикак. Обновлять GUI можно только из главного потока. В твоем случае в методе msgBox.
Только вопрос… Как получать доступ к контроллам формы из потока QThread?
SHSМожет.
Еще интересует может ли поток принимать переменные?
class Thread(QThread):
def __init__(self, param):
QThread.__init__(self)
self.param = param
thread = QThread(1111)