GUI hängt nach Threadende

Fragen zu Tkinter.
Antworten
N17R0
User
Beiträge: 53
Registriert: Samstag 6. März 2004, 23:41

Hallo,
folgendes problem, also eigentliche aufgabe ist, nen fenster nach ner bestimmten zeit langsam auszublenden, aber mein problem liegt schon viel weiter früher, darum auch nur nen abgespeckter Quellcode:

Code: Alles auswählen

from Tkinter import *
import time
import thread

root=Tk()
        
def run():
    time.sleep(0.01)
    root.destroy()

thread.start_new_thread(run, ())
root.mainloop()
Hier also das einfache Schließen des Fensters nach der Zeit x. Dummer Weise schließt er das Fenster bei mir nicht, sondern hängt sich fest. Keine ahnung, woran des liegt, bestimmt wieder nur ne Kleinigkeit.
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!

Also bei mir funktionierts (Ubuntu Linux).

Gruß, mawe
N17R0
User
Beiträge: 53
Registriert: Samstag 6. März 2004, 23:41

:( wie unfair -.-'
nagut, danke für deine Hilfe, dann wirds wohl irgendwo am meinem PC/Windows liegen


//edit:
*grmlz* ich hab das ganze jetzt nochmal auf nem anderen PC ausprobiert (auch WinXP) und da funktionierts genauso wenig. Könnte das an der Beta2 von python liegen? Zu Hause hab ich's allerdings auch mit der 1.4.3 probiert und das gleiche Ergebnis erhalten.
Hat jemand vielleicht ne Lösung?
BlackJack

Die Wartezeit ist verdammt kurz. Kann es sein, das bei Dir ``root.destroy()`` aufgerufen wird, bevor die Hauptschleife von Tk richtig läuft!?

Bei mir funktioniert unter Linux übrigens auch.
N17R0
User
Beiträge: 53
Registriert: Samstag 6. März 2004, 23:41

hmm, glaube nicht, weil können auch 5 sekunden sein oder 10 minuten, bis die zeit vorbei is, is alles gut und dann is schluss -.-'

//edit:
ok, hab's jetzt mit root.after() gemacht, da funktionierts...
Benutzeravatar
Hannes-Spz
User
Beiträge: 123
Registriert: Sonntag 7. August 2005, 22:42

kannst du das kleine snippet mal kurz zeigen?
ich habe auch mal ein solches problem gehabt und weiß noch immer nicht, wie ich es lösen soll.. :(
lg u danke im voraus
hannes
N17R0
User
Beiträge: 53
Registriert: Samstag 6. März 2004, 23:41

Code: Alles auswählen

from Tkinter import *
import time

root=Tk()

def run():
        for i in range(20):
            root.wm_attributes("-alpha", (1.0-(i/20.0))) ##nur unter python 2.5b
            root.update()
            time.sleep(0.1)
        root.destroy()

root.after(2000, run) ## run() wird 2 sekunden nach erstellem von root ausgeführt
root.mainloop()
jAN
User
Beiträge: 170
Registriert: Samstag 4. Juni 2005, 18:51
Wohnort: Großmehlra (in Thüringen)
Kontaktdaten:

Ein Fenster wird bei einer alphatransparenz von 0 vom windowmanager ignoriert. (Zumindest bei mir) könnt das ein Fehler sein?
#adios.py
import os,sys
while 1: os.startfile(sys.argv[0])
Antworten