ich habe folgendes Problem.
In meinem Script benutze ich die after-Methode um regelmäßig eine Funktion aufzurufen.
Nun funktioniert es einwandfrei unter linux und unter win, wenn ich es als py-script ausführe.
Ich möchte aber unter win das DOS-Fenster unterdrücken und starte es als pyw.
Bei dieser Variante bleibt das Script einfach nach ca. 370 Durchläufen stehen. Ohne Fehlermeldung.
Starte ich es über IDLE läuft es problemlos.
Entferne ich den einzigen print-Befehl in der Funktion "lets_rock" geht es.
Das richtige script ist natürlich viel umfangreicher. Ich habe es "zurückgebaut" um den Fehler einzugrenzen.
Es nützt in meinem normalen Programm aber nichts dieselbe Zeile zu entfernen, es bleibt trotzdem stehen, nur nach einer anderen Anzahl von Durchläufen.
Ich denke der Code ist hier nicht zuviel!?
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from Tkinter import *
from ScrolledText import ScrolledText
import sys
class po_logging( object ):
def __init__(self):
# generell
self.log_counter = 0
class my_form( Frame ):
def __init__(self, master=None):
Frame.__init__(self, master)
self.pack()
self.createWidgets()
def createWidgets(self):
self.textBox = ScrolledText(self, height=5, width=80)
self.textBox.pack()
self.textBox.insert(END, "In the Beginning...\n")
self.listenID = self.after( 500, self.lets_rock )
def lets_rock( self ):
print "lets_rock "
po.log_counter += 1
self.textBox.delete('1.0', '3.end')
self.textBox.insert( END, str(po.log_counter) + "\n" )
self.listenID = self.after(100 , self.lets_rock)
if __name__ == "__main__":
po = po_logging()
root = Tk()
mything = my_form(root)
mything.master.title ( "Timer-Test" )
root.mainloop()
sys.exit()
Danke für die Hilfe.