GehirnJogger mit Tk

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

Hallo !

Ein kleiner GehrinJogger !

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

Dr. Kaytecshima .... :D

So jetzt macht mich mal runter !

gruß frank
BlackJack

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: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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

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: 1156
Registriert: Dienstag 9. März 2004, 18:22

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

@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: 608
Registriert: Dienstag 13. Februar 2007, 21:57

@ 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

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: 608
Registriert: Dienstag 13. Februar 2007, 21:57

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
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
Benutzeravatar
kaytec
User
Beiträge: 608
Registriert: Dienstag 13. Februar 2007, 21:57

Danke Leonidas !

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

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

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

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

Gruß

GnuShi
Benutzeravatar
kaytec
User
Beiträge: 608
Registriert: Dienstag 13. Februar 2007, 21: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

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
Benutzeravatar
kaytec
User
Beiträge: 608
Registriert: Dienstag 13. Februar 2007, 21:57

Hallo Gnushi !

Kommt mir bekannt vor !:D

Sieht gut aus - Hast du es auch für Win, da meine Freundin Vista-Nutzer ist ?

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

kaytec hat geschrieben:Sieht gut aus - Hast du es auch für Win, da meine Freundin Vista-Nutzer ist ?
Nee, Windows kenne ich nur vom Hörensagen. Die armen Menschen, die sowas benutzen müssen. :twisted:

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

Hallo !

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

Mit Bestenliste !

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

kaytec hat geschrieben:Mit Bestenliste !
Warum komme ich da nicht rein? Hatte zwar nicht so viele Runden wie Lina, konnte mich aber dennoch sehen lassen.

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

Hallo GnuShi !

Kommt bei dir die Frage nach einem Eintrag in die Bestenliste ? Falls ja, dann mußt du einen angeben, sonst speichert er es nicht in der Bestenliste.

gruß frank
Antworten