Flimmern Aktualisierung von Labels

  • Hallo ihr

    ich bin bisher eigentlich ganz gut mit AutoIt zurecht gekommen, aber nun habe ich ein problem, dass ich auch nach längerem grübeln nicht lösen kann.

    wenn ein Label einen text verpasst bekommt, scheint es zu flimmern oder kurz garkeinen Text zu zeigen.

    Beispiel a:

    % wird in einer schleife ermittelt (aktueller durchlauf/anzahl durchläufe). Nun wird diese %-Angabe auf einem Label angezeigt. eigentlich wird ja immer der alte text durch den neuen ersetzt - dennoch ist oft kurzzeitig kein inhalt in dem Label zu sehen bzw beim aktualisieren flimmert es

    Das gleiche flimmern bei einem Label gibt es auch in beispiel b:

    in jedem durchlauf der GUI-Schleife wird der text neu gesetzt, unter bestimmten bedingungen geändert (selbst wenn sich nichts ändert ein flimmern)

    woher kommt das und kann man das ändern?

    • Offizieller Beitrag

    Mach mal ein Minimalbeispiel mit dem Flimmern - evtl. erkennst du dann schon das Problem. Ansonsten können wir uns es zumindest mit Quelltext mal anschauen. Möglicherweise (unwahrscheinlich) ist es auch ein Bug von AutoIt (aktuellen Version installieren!).

    peethebee

  • Minimalbeispiel:

    #include<GUIConstants.au3>
    $GUI = GUICreate ("",200,400)
    GUISEtState (@SW_SHow)
    $Label = GUICtrlCreateLabel ("Label",40,50,70,80)
    $count = 0
    while 1
    $count = $count +1
    $GUIGetMsg = GUIGEtMsg()
    if $GUIGetMsg = $GUI_EVENT_CLOSE then exit
    GUICtrlSetData ($Label,"Schleife Nr. " & $count)
    WEnd


    übrigens verstärkt sich das flimmern scheinbar, wenn man die maus bewegt ^^

    autoit müsste 3.2.8 sein, also aktuelle final

    Einmal editiert, zuletzt von der_neue271 (21. September 2007 um 19:31)

  • lol 2 sachen, ne :D

    - setze mal ein Sleep in deine Schleife (etwa 100 od. 200), bekommt auch der CPU-Last ganz gut
    hehe in der hilfe steht, man soll genau das nicht machen ^^

    - versuche das Setzen der Labelwerte auf ein Minimum zu reduzieren
    natürlich - sollte ja nur n minimalskript sein ....

    - evtl. noch: GUISetState(@SW_LOCK ) - Labeldaten setzen - GUISetState(@SW_UNLOCK )
    bringt nichts - wenn man mit sleep arbeitet geht es wesentlich besser, aber es muss doch andere alternativen geben, als ne schleife künstlich zu verlängern?!

  • ja wie gesagt dann flimmerts auch nicht mehr bzw nicht mehr so stark aber in ner schleife dann 100e male 100 ms zu warten - dann dauert das ganze ja zig sekunden länger

  • anders geht aber nicht... kommt darauf an, was man mit dem label so alles anstellen will :comp1: