Ich konnte diesem Forum schon sehr viel nützliche Tipps entnehmen. Vielen Dank dafür. Bei einem Problem komme ich aber neuerdings nicht weiter und habe mich daher kurzerhand registriert. Dies ist also meine erster Beitrag und ich hoffe ihr könnt mir helfen.
In einem Lager gibt es verschiedene Stapel mit Produkten.
Für jeden Stapel 1-43 habe ich mit QT-Designer einer Pushbutton erstellt.
Es sind also 43 Pushbuttons die als Text die Anzahl der Produkte auf diesem Lagerplatz anzeigen und je nach Produktsorte soll sich die Farbe des Buttons ändern.
Die Lagerdaten werden aus einer SPS gelesen (mit snap7)
Das Bytearray geht dann aus meinem Main-Thread per Signal zum GUI und wird dort in integers zerlegt (Funktion get_int).
Dann folgt die Schleife über alle pushbuttons die je nach ermittelten Werten eine bestimmte Bezeichnung, Farbe und ggf. Umrandung annehmen.
Das ganze funktioniert immer ein paar Durchläufe und plötzlich crasht das GUI (pythonw.exe funktioniert nicht mehr=
Wenn ich die Änderung des Button-Styles ausblende, läuft es einwandfrei, Stundenlang ohne Crash. Mir scheint es so, als könne QT diese Masse an Buttonstyle-Änderungen nicht verkraften. Wann der Crash kommt, scheint vollkommen zufällig zu sein.
woran kann es nur liegen?
Code: Alles auswählen
u=43
#Anzahl belegte in Buttontext
for ii in range(u): #ii geht bei Null los und läuft bis 42
start_plb=86
byte_plb=(start_plb+(2*ii))
k=ii+1
global plb
plb =[None]*44
plb[k] = get_int(msg,byte_plb)
buttonadresse='Stapel_'+str(k)
getattr(self,buttonadresse).setText(_translate("MainWindow", str(plb[k]), None))
for ii in range(u): #ii startet bei 0 und läuft bis 42
start_sorte=258
byte_plsorte=(start_sorte+(2*ii))
k=ii+1
global plsorte
plsorte =[None]*44
plsorte[k] = get_int(msg,byte_plsorte)
buttonadresse='Stapel_'+str(k)
if plsorte[k]==1:
colorbuttonbg="background-color:rgb(0, 255, 0)"
elif plsorte[k]==2:
colorbuttonbg="background-color: rgb(0, 170, 0)"
elif plsorte[k]==3:
colorbuttonbg="background-color:rgb(170, 255, 127)"
elif plsorte[k]==7:
colorbuttonbg="background-color: rgb(255, 255, 0)"
elif plsorte[k]==8:
colorbuttonbg="background-color:rgb(255, 170, 0)"
elif plsorte[k]==0:
colorbuttonbg="background-color:rgb(255, 255, 255)"
else :
colorbuttonbg=""
start_aktiv=172
byte_plaktiv=(start_aktiv+(2*ii))
global plaktiv
plaktiv =[None]*44
plaktiv[k] = get_int(msg,byte_plaktiv)
if plaktiv[k]==0:
colorbuttonbg=colorbuttonbg+";border-color: rgb(255, 0, 0);border-style: outset;border-radius: 6px;border-width: 4px;"
else:
colorbuttonbg=colorbuttonbg
# WENN ICH DIE FOLGENDE ZEILE AUSBLENDE FUNKTIONERT ES OHNE CRASH
getattr(self,buttonadresse).setStyleSheet(_fromUtf8(colorbuttonbg))