GehirnJogger mit Tk

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Benutzeravatar
kaytec
User
Beiträge: 544
Registriert: Dienstag 13. Februar 2007, 21:57

Montag 25. Februar 2008, 22:59

Hallo !

Ein kleiner GehrinJogger !

http://paste.pocoo.org/show/29994/

Dr. Kaytecshima .... :D

So jetzt macht mich mal runter !

gruß frank
BlackJack

Dienstag 26. Februar 2008, 00:01

Wenn ich das richtig sehe wird da von einem zweiten Thread aus die GUI manipuliert. Das ist unsicher weil `Tkinter` nicht "thread safe" ist.
EyDu
User
Beiträge: 4871
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Dienstag 26. Februar 2008, 00:26

Sehe ich das richtig, dass auf Kommentare aus Speichereffizienz verzichtet wurde ;-) ?
Benutzeravatar
kaytec
User
Beiträge: 544
Registriert: Dienstag 13. Februar 2007, 21:57

Dienstag 26. Februar 2008, 07:52

Danke an EyDu u. BlackJack !

Eigentlich startet immer nur ein Thread und in seiner Laufzeit sollten die Buttons 'disabled' sein. Macht eigentlich keine Probleme - In einenm Thread nie die GUI manipulieren ?

Bei der fetten grafischen Animation, sollte man auf die Ressourcen achten :oops:. Ok - Kommentare füge ich noch ein - bekomme bestimmt dafür 'Haue' und nicht für den code.

Wer nicht postet, der bleibt dumm !

gruß frank
burli
User
Beiträge: 1116
Registriert: Dienstag 9. März 2004, 18:22

Dienstag 26. Februar 2008, 08:36

Wenn ich das Programm beende bekomme ich diesen Fehler
Exception in thread Thread-8:
Traceback (most recent call last):
File "threading.py", line 460, in __bootstrap
self.run()
File "jogger.py", line 23, in run
self.farbe_aendern(self.intro, self.intro_intervall)
File "jogger.py", line 41, in farbe_aendern
self.button_an_aus[index].config(bg=self.dunkel[index])
File "lib-tk/Tkinter.py", line 1200, in configure
return self._configure('configure', cnf, kw)
File "lib-tk/Tkinter.py", line 1191, in _configure
self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
RuntimeError: main thread is not in main loop
BlackJack

Dienstag 26. Februar 2008, 10:15

@kaytec: Auf die GUI darf man nur von dem Thread aus zugreifen, in dem die `mainloop()` läuft, sonst kann alles mögliche, bis hin zu harten Abstürzen passieren. Das es bei Dir keine Probleme gibt, hat dabei nichts zu sagen.

Der Beitrag von burli ist so ein Problem was durch den Zugriff aus dem anderen Thread entsteht.
Benutzeravatar
kaytec
User
Beiträge: 544
Registriert: Dienstag 13. Februar 2007, 21:57

Dienstag 26. Februar 2008, 14:45

@ burli

Das passiert bei mir nicht ? Falls ich das Programm mit X beende habe ich auch diese Fehlermeldung - bei laufenden Thread. Beim normalen Beenden passiert dies eigentlich nicht.

@BlackJack

Mein Thread läuft doch in der mainloop() ?! Habe ich da was falsch verstanden? Ich könnte die Buttons auch innerhalb der GUI blockieren, doch wie kann ich testen, ob der Thread noch läuft?

gruß frank
BlackJack

Dienstag 26. Februar 2008, 15:52

Der Thread läuft nicht in der `mainloop()`. Du hast zwei Threads, einen in dem die `mainloop()` läuft und den "Blinker".
Benutzeravatar
kaytec
User
Beiträge: 544
Registriert: Dienstag 13. Februar 2007, 21:57

Dienstag 26. Februar 2008, 19:38

Danke BlackJack !

Wie geht man es nun richtig an? Andere Gui benutzen - nur mit ...after() ? Das mit dem Thread anders lösen ?

gruß frank
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 26. Februar 2008, 21:04

kaytec hat geschrieben:Andere Gui benutzen
Mit anderen Toolkits hättest du exakt das selbe Problem.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
kaytec
User
Beiträge: 544
Registriert: Dienstag 13. Februar 2007, 21:57

Dienstag 26. Februar 2008, 21:10

Danke Leonidas !

Das hätten wir ja mal geklärt - und wie jetzt anders ?

gruß frank
Benutzeravatar
kaytec
User
Beiträge: 544
Registriert: Dienstag 13. Februar 2007, 21:57

Mittwoch 27. Februar 2008, 18:56

Hallo !

Habe es mal anders probiert.

http://paste.pocoo.org/show/30294/

gruß frank
Gnushi
User
Beiträge: 77
Registriert: Dienstag 12. Dezember 2006, 09:49

Freitag 29. Februar 2008, 11:06

kaytec hat geschrieben:http://paste.pocoo.org/show/30294/
Mir gefällt es!

Gruß

GnuShi
Benutzeravatar
kaytec
User
Beiträge: 544
Registriert: Dienstag 13. Februar 2007, 21:57

Freitag 29. Februar 2008, 11:57

Hallo Gnushi !

Mir nicht mehr - meine Freundin schaft 23 Runden ! Meine Anzahl: ..... Runden. Sie hätte gerne eine Bestenliste.

gruß frank
Gnushi
User
Beiträge: 77
Registriert: Dienstag 12. Dezember 2006, 09:49

Freitag 29. Februar 2008, 14:33

kaytec hat geschrieben:Mir nicht mehr - meine Freundin schaft 23 Runden ! Meine Anzahl: ..... Runden. Sie hätte gerne eine Bestenliste.
Alle Achtung!

Jetzt wird es Zeit für den Cheat-Modus.... :twisted:

Kennst Du übrigens "TouchCode"? http://www.pygame.org/project/377/ (Ist mein erstes richtiges Python-Programm)

GnuShi
Antworten