Чтобы ответить на вопрос о том, как излучать сигнал в python:
В отличие от C ++, при испускании пользовательского PyQt сигнала (в отличие от Qt) подпись должна быть опущена.
Итак, чтобы испустить сигнал, сделайте что-то вроде этого:
thread.emit(QtCore.SIGNAL('newArtworkAvailable'), icon)
А для подключения к сигналу сделайте что-то вроде этого:
widget.connect(thread, QtCore.SIGNAL('newArtworkAvailable'),
widget.setNewArtwork)
И просто для ясности:
Чтобы это работало, не-GUI-поток должен излучать сигнал, который затем принимается соответствующим виджетом в основном GUI-потоке. Создание QImage
в потоке, не связанном с GUI, должно быть нормальным, но никогда не пытайтесь вызывать какие-либо связанные с GUI методы вне основного потока.
NB
Я использовал здесь синтаксис сигналов старого стиля, потому что это то, что вы используете. Тем не менее, вы можете захотеть взглянуть на поддержку сигналов и слотов нового стиля PyQt , поскольку она гораздо более гибкая и питоническая.