Я попытался получить строку из потока в мой основной графический интерфейс с использованием СИГНАЛОВ. Все работает нормально, пока я не хочу использовать строку в QMessageBox. Распечатка не проблема, но начиная QMessageBox дает мне несколько ошибок (некоторые из них о QPixmap, которые я даже не использовать в GUIОшибка потоковой передачи PyQT при передаче сигнала на QMessageBox
Вот короткий рабочий пример моего кода:.
import sys
import urllib2
import time
from PyQt4 import QtCore, QtGui
class DownloadThread(QtCore.QThread):
def __init__(self):
QtCore.QThread.__init__(self)
def run(self):
time.sleep(3)
self.emit(QtCore.SIGNAL("threadDone(QString)"), 'test')
class MainWindow(QtGui.QWidget):
def __init__(self):
super(MainWindow, self).__init__()
self.list_widget = QtGui.QListWidget()
self.button = QtGui.QPushButton("Start")
self.button.clicked.connect(self.start_download)
layout = QtGui.QVBoxLayout()
layout.addWidget(self.button)
layout.addWidget(self.list_widget)
self.setLayout(layout)
self.downloader = DownloadThread()
self.connect(self.downloader, QtCore.SIGNAL("threadDone(QString)"), self.threadDone, QtCore.Qt.DirectConnection)
def start_download(self):
self.downloader.start()
def threadDone(self, info_message):
print info_message
QtGui.QMessageBox.information(self,
u"Information",
info_message
)
#self.show_info_message(info_message)
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
window = MainWindow()
window.resize(640, 480)
window.show()
sys.exit(app.exec_())
I «получаю это erros:
QObject :: SetParent: не удается установить родителя, новый родитель находится в другом потоке
QPixmap: это не безопасно использовать растров за пределами GUI поток
Эта ошибка возникает только при перемещении мыши и QMessageBox остается открытым:
QObject :: StartTimer: таймеры не может быть запущен из другого потока
QApplication: Фильтр событий объекта не может быть в другой теме.
Может ли кто-нибудь сказать мне, что я делаю неправильно?
Это первый раз, когда я использую темы.
Спасибо! Stefanie
Большое спасибо, это решило проблему! – snowflake