ScrolledText unveränderlich machen...

Fragen zu Tkinter.
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo yipyip

Danke für deine Antwort.

Habe Versuche mit deinem Skript durchgeführt. Hierfür lese ich die IP-Adresse und Benutzername für die Verbindung nicht aus einer Datei sondern setze die Variablen direkt wie folgt:

Code: Alles auswählen

self.ip = "127.0.0.1" #self.data[0]
self.user = "wuf" #self.data[1]
Hier dein angepasstes Skript:
Code ausgelagert

Mein Test führte ich wie folgt aus:

a) Eingabe einer Meldung in das hierfür vorgesehene Eingabefeld.
b) Aktivieren der Schaltfläche 'Send'

Dies löst bei mir folgende Exception aus:
Unhandled exception in thread started by <bound method Chat.receive_message of <__main__.Chat object at 0x811caec>>
Traceback (most recent call last):
File "text_format_tags_05_02.py", line 112, in receive_message
self.size, remote="remote")
File "text_format_tags_05_02.py", line 118, in write_message_to_screen
self.textwidget.config(state=Tk.NORMAL)
File "/usr/lib/python2.5/lib-tk/Tkinter.py", line 1197, in configure
return self._configure('configure', cnf, kw)
File "/usr/lib/python2.5/lib-tk/Tkinter.py", line 1188, in _configure
self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
_tkinter.TclError: out of stack space (infinite loop?)
Da mir das Modul 'socket' nicht so bekannt ist weis ich nicht genau was hier abläuft.

Mein Setup:
SuSE 11.0
Python2.5

Kannst du vielleicht den Test mit meinem hier platzierten Skript durchführen?

Besten Dank für deine Bemühung.

Gruss wuf :wink:
Take it easy Mates!
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Das Problem ist:
Ich kann dieses Problem bei mir nicht nachvollziehen.
An den Sockets liegts wohl nicht.

Ich vermute mal ganz stark:

Es ist das Threading!

Für die Funktion 'recieve_message()'
wird ein eigener Thread gestartet, der auf die
Gui im Main-Thread zugreift.

Da gab's doch mal ein Posting "Gui, Tkinter, Threads, Queue"
im Codesnippets-Unterforum...

:wink:
yipyip
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo yipyip

Habe das Skript auf meinem füheren Setup ausprobiert.

TOSHIBA-Satellite
SuSE 10.0

Da funktioniert es

Auf meinem neuen Setup

ACER-Aspire
SuSE 11.0

Funktioniert es nicht. Habe es auch mit anderen Port-Nummern probiert..

Sehe mich wieder einmal mit Höhlenforschung konfrontiert

Danke! Gruss wuf :wink:
Take it easy Mates!
Benutzeravatar
kaytec
User
Beiträge: 608
Registriert: Dienstag 13. Februar 2007, 21:57

Hallo wuf und yipyip !

Mal mit after() - ist evt. noch nicht optimal.
http://paste.pocoo.org/show/107865/
gruss frank
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo kaytec

Besten Dank für dein Vorschlag. Er ist ein Volltreffer! Irgendwie muss die Methode 'write_message_to_screen(......)' gleichzeitig von zwei Orten aufgerufen werden und somit den Stack durcheinander bringen.

Danke für dein Super-Tipp. Wünsche dir ein schönes Wochenende.

Gruss wuf :wink:
Take it easy Mates!
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Hallo wuf,
mit meinem letzten Posting wollte ich ja gerade
vermeiden, dass Du "Höhlenforschung" betreibst.

Scheinbar sind hier die Probleme beim Threading
immer noch nicht ausreichend genug behandelt worden...

Noch ein Link zu Sockets:
http://turing.cs.camosun.bc.ca/COMP173/ ... 3606-4.pdf

:wink:
yipyip
Antworten