ich versuche Gerade eine Digitaluhr in PyGtk zu implementieren.
Die einzelnen Zahlen habe ich als Gif`s vorliegen. Jede Sekunde gleicht die Funktion changeClock() die Uhrzeit mit einer externen Klasse ab und sollte dann auch die Zeitanzeige ändern.
Nur irgendwas mache ich bei der Anwendung von gobkect.timeout falsch und der Intervall wird einfach nicht wiederholt.
Hier mal der Code von der Klasse:
Code: Alles auswählen
import pygtk
pygtk.require("2.0")
import gtk,os, gobject
import filechooser
import player
from clock import Clock
class Mainframe():
isplaying = False
def __init__(self):
self.mainloop = gobject.MainLoop()
## Erzeugen des Window-Objectes und verbinden der Signalslots
self.builder = gtk.Builder()
self.builder.add_from_file("GUI.glade")
self.builder.connect_signals({ "on_window1_destroy" : self.delete_event,
"on_Cancel_clicked" : self.delete_event,
"on_open_clicked" : self.openFile,
"on_play_clicked" : self.play})
self.window = self.builder.get_object("window1")
# Wenn der Bildwechsler anläuft sehe ich nichts vom Fenster
self.window.show()
## Erzeugen der Bildobjekte um sie ändern zu können
self.h1 = self.builder.get_object("H1")
self.h2 = self.builder.get_object("H2")
self.m1 = self.builder.get_object("M1")
self.m2 = self.builder.get_object("M2")
self.s1 = self.builder.get_object("S1")
self.s2 = self.builder.get_object("S2")
## Hier wird die Schleifenfunktion zum mainloop hinzugefügt
## ..sollte zumindest
gobject.timeout_add(1000, self.changeClock)
def delete_event(self, widget):
self.player.stop()
print "shut Player down"
return False
def openFile(self, widget):
self.chooser = filechooser.FileChooser()
self.somefile = self.chooser.getFilename()
def play(self, widget):
if self.isplaying == False:
self.isplaying = True
self.player.play_uri(self.somefile)
else:
self.player.stop()
self.isplaying = False
def changeClock(self):
self.clock = Clock()
self.clockrunner = [ ("%H", 0) , ("%H", 1) ,
("%M", 0) , ("%M", 1) ,
("%S", 0) , ("%S", 1) ]
self.clocksave = [ 2 , 2 , 2 , 2 , 2 , 2]
for i in range (len(self.clockrunner)):
print self.clockrunner[i]
self.clocksave[i] = self.clock.getTime_formated(self.clockrunner[i][0] , self.clockrunner[i][1] )
print self.clocksave
pictures = ["0.gif","1.gif","2.gif","3.gif","4.gif","5.gif","6.gif","7.gif","8.gif","9.gif",]
picture_objects = [self.h1, self.h2, self.m1, self.m2, self.s1, self.s2]
for i in range ( len(picture_objects) ):
picture_objects[i].set_from_file(pictures[int(self.clocksave[i])])
def main():
frame = Mainframe()
gtk.main()
return 0
if __name__ == '__main__': main()