Форум сайта python.su
Привет.
Нигде не могу найти инфу, как обновлять progressBar из обычного питоновского потока (не Qt)
Да и вообще как обращаться к GUI из потоков. Например показать QMessageBox.
Если подбросите наипростейщий пример, буду очень признателен.
Офлайн
Вместе с Qt нужно использовать Qt-шные потоки, ибо из них можно посылать сигналы.
http://python.su/forum/viewtopic.php?pid=60517#p60517
Отредактировано (Дек. 11, 2010 01:21:34)
Офлайн
Очень жаль, но тем не менее деваться некуда и придется использовать…
Только вопрос… Как получать доступ к контроллам формы из потока QThread?
Код:
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_())
Отредактировано (Дек. 11, 2010 09:15:30)
Офлайн
SHSНикак. Обновлять GUI можно только из главного потока. В твоем случае в методе msgBox.
Только вопрос… Как получать доступ к контроллам формы из потока QThread?
SHSМожет.
Еще интересует может ли поток принимать переменные?
class Thread(QThread):
def __init__(self, param):
QThread.__init__(self)
self.param = param
thread = QThread(1111)
Отредактировано (Дек. 11, 2010 12:12:52)
Офлайн
Спасибо за содержательный ответ.
Офлайн