vorab zur Info: Ich habe erst vor einer Weile mit Python und GUI-Programmierung angefangen, also bitte nicht ganz so streng sein, falls ich was verrissen habe...

Ich "arbeite" an einem Programm, welches die Farben und Inhalte(Text) der Zellen/Items des QTableWidget kontinuierlich ändert. Es werden dann Ein Wert (umgewandelt in einen String) und die dazugehörgen RGB-Werte als Hintergrundfarbe angezeigt. Das Ändern dieser Werte geschieht in einem Thread (treading.Thread oder QThread - Welches ist da besser?). Später sol das als Anzeige für ausgelesene Sensordaten dienen.
Zunächst habe ich Folgendes versucht: Das Fenster wird normal geöffnet und der Thread soll pausieren und nach 2 Sekunden, dann die 64 Felder (4 Zeilen * 16 Spalten) testweise mit "Hallo" beschreiben. Das Problem ist Folgendes: die Werte werden erst angezeigt, wenn ich in die entsprechenden Zellen/Items anklicke oder das Fenster in der Größe verändere. Diese Veränderungen sollen aber sofort angezeigt werden.
(Später soll der Thread dann kontinuierlich laufen und auf Variablen zugreifen, die dann als String in den Zellen angezeigt werden.)
Scheinbar muss ich dem Programm einen "Anreiz" geben, damit es die neuen Inhalte/Farben anzeigt, aber wie mache ich das?

Danke schonmal im Voraus!
LG Nion

ich verwende: PyQt5, Python 3.4, Eclipse mit Pydev, Windows7
Code: Alles auswählen
class UpdateWindow(QThread):
def run(self):
time.sleep(2)
i=0
j=0
while i <4:
while j<16:
item = screen.ui.MLX90620.item(i, j)
item.setText(QtCore.QCoreApplication.translate("Temperaturmessung","hallo"))
brush = QtGui.QBrush(QtGui.QColor(10,100, 10))
brush.setStyle(QtCore.Qt.SolidPattern)
item.setBackground(brush)
j+=1
i+=1
j=0
screen.update()
print('ok')
class StartQT5(QMainWindow):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.ui = Ui_Temperaturmessung()
self.ui.setupUi(self)
if 1:
app = QApplication(sys.argv)
screen = StartQT5()
UW=UpdateWindow()
UW.start()
screen.show()
app.exec_()