From a8efd1c3e19ce970363ad827803edbca7b7e2259 Mon Sep 17 00:00:00 2001 From: Roberto Alsina Date: Mon, 3 Jun 2024 18:07:23 -0300 Subject: [PATCH] Fix examples a bit --- README.md | 3 + examples/{README => README.md} | 6 +- examples/demo1.py | 2 +- examples/demo2.py | 8 +- examples/demo3.py | 6 +- examples/demo4.py | 7 +- examples/demo5.py | 2 +- src/pyxforms/Pyxform.py | 739 --------------------------------- 8 files changed, 17 insertions(+), 756 deletions(-) rename examples/{README => README.md} (80%) delete mode 100644 src/pyxforms/Pyxform.py diff --git a/README.md b/README.md index 48a1abe..41558dc 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,9 @@ Python 3.8 or later It's still fairly incomplete, mainly because of lack of free time, but it is functional. +Also, it only covers the functionality of XForms 0.8, any new widgets or +methods added after that are not wrapped. + I tried to provide the easiest possible way to make a GUI for python under UNIX, and think it's ready to be seen. diff --git a/examples/README b/examples/README.md similarity index 80% rename from examples/README rename to examples/README.md index 582e5d6..1d6878d 100644 --- a/examples/README +++ b/examples/README.md @@ -7,12 +7,8 @@ In order to fully understand this (and use the hundreds of things not demonstrated), you should: a) Read the XForms docs -b) Read the Pyxform.py file +b) Read the pyxforms/__init__.py file c) Read all the .c files Anyway, it's just a sampler, this should get MUCH more complete soon -Anyway, you can email me - -Roberto Alsina -ralsina@unl.edu.ar diff --git a/examples/demo1.py b/examples/demo1.py index 0adcf3b..a0ed66d 100755 --- a/examples/demo1.py +++ b/examples/demo1.py @@ -1,4 +1,4 @@ -#!/usr/local/bin/python +#!/usr/bin/env python from pyxforms import * # diff --git a/examples/demo2.py b/examples/demo2.py index 40299d8..b21a80d 100755 --- a/examples/demo2.py +++ b/examples/demo2.py @@ -1,7 +1,7 @@ -#!/usr/local/bin/python +#!/usr/bin/env python -from Pyxform import * -from goodies import * +from pyxforms import * +from pyxforms.goodies import * # # Init the library (sucks but works) @@ -35,7 +35,7 @@ win.Add(a_button) def funct(self): # It shows a message and exits (or not) - answer = show_question("Do you want", "to exit?", "") + answer = show_question("Do you want to exit?", "") if answer == 1: sys.exit() diff --git a/examples/demo3.py b/examples/demo3.py index 3d3cb55..8ef0650 100755 --- a/examples/demo3.py +++ b/examples/demo3.py @@ -1,7 +1,7 @@ -#!/usr/local/bin/python +#!/usr/bin/env python -from Pyxform import * -from goodies import * +from pyxforms import * +from pyxforms.goodies import * # # Init the library (sucks but works) diff --git a/examples/demo4.py b/examples/demo4.py index ece0ecb..8268cd9 100755 --- a/examples/demo4.py +++ b/examples/demo4.py @@ -1,7 +1,8 @@ -#!/usr/local/bin/python +#!/usr/bin/env python -from Pyxform import * -from goodies import * +from pyxforms import * + +from pyxforms.goodies import * # # Init the library (sucks but works) diff --git a/examples/demo5.py b/examples/demo5.py index d772381..92cf9cd 100755 --- a/examples/demo5.py +++ b/examples/demo5.py @@ -1,6 +1,6 @@ #!/usr/local/bin/python -from Pyxform import * +from pyxforms import * from goodies import * # diff --git a/src/pyxforms/Pyxform.py b/src/pyxforms/Pyxform.py deleted file mode 100644 index c3178bd..0000000 --- a/src/pyxforms/Pyxform.py +++ /dev/null @@ -1,739 +0,0 @@ -########################################################## -# This is the Python interface to the pyxforms C module -# - - -import sys -import xforms -import forms -import objects -import bitmaps -import pixmaps -import box -import browser -import button -import choice -import clock -import counter -import dial -import frame -import input -import menu -import positioner -import slider -import timer - -############################################################################### -# These are function needed to run the XForms library -# Needs a LOT of work - -def xfinit (appname,appclass,argv0): - xforms.init (appname,appclass,argv0) - -############################################################################### -# This is the synthetic event-loop to use under python: - -_objects={} - -def runforms(): - while 1: - ob=_objects[str(xforms.do_forms())] - ob.cb (ob.args) - -############################################################################### -# This is the default callback function: - -def _nocb(args): - print "This object has no Callback!" - -############################################################################## -#This is the Form class - - -class Form: - def __init__(self,t=6,w=200,h=200): - self.id=forms.create (0,w,h) - self.__box=Box(t,0,0,w,h,"") - self.Add (self.__box) - self.__box.c1=11 - self.__box.c2=15 - self.__minx=1 # Reasonable defaults for things that - self.__miny=1 # I can't get from XForms - self.__maxx=10000 # Notice that if the C code changes them - self.__maxy=10000 # They get out of sync! - self.__title=sys.argv[0] #the "preferred" form title - self.__placement=16388 - self.__decoration=1 - self.objs=() # A place to store the obj list. Useful? - - def Show (self): - self.winid=forms.show (self.id,self.__placement,self.__decoration,self.title) - def Hide (self): - forms.hide (self.id) - def Freeze (self): - forms.freeze (self.id) - def Unfreeze (self): - forms.unfreeze (self.id) - def Activate (self): - forms.activate (self.id) - def Deactivate (self): - forms.deactivate (self.id) - def Scale (self,x,y): - forms.scale (self.id,x,y) - def Redraw (self): - forms.redraw (self.id) - def Add (self,object): - forms.add_object (self.id,object.id) - object.parent=self - def Setminsize (self,x,y): - forms.set_minsize (self.id,x,y) - self.__minx=x # The __ is needed to avoid endless looping - self.__miny=y # on min[xy], which are non-gettable from XForms - def Setmaxsize (self,x,y): - forms.set_maxsize (self.id,x,y) - self.__maxx=x - self.__maxy=y - def Settitle (self,title): - forms.set_title (self.id,title) - self.__title=title - def Gettitle (self): - if self.visible: - return forms.get_title(self.id) - else: - return self.__title - def Setcolor (c1,c2): - self.__box.Setcolor (c1,c2) - - def __setattr__(self,name,value): - if name=="x": - (tx,ty,tw,th)=forms.get_geometry (self.id) - forms.set_geometry (self.id,value,ty,tw,th) - elif name=="y": - (tx,ty,tw,th)=forms.get_geometry (self.id) - forms.set_geometry (self.id,tx,value,tw,th) - elif name=="w": - (tx,ty,tw,th)=forms.get_geometry (self.id) - forms.set_geometry (self.id,tx,ty,value,th) - elif name=="h": - (tx,ty,tw,th)=forms.get_geometry (self.id) - forms.set_geometry (self.id,tx,ty,tw,value) - elif name=="dblbuffer": - forms.set_dblbuffer(self.id,value) - elif name=="frozen": - if value: - self.Freeze() - else: - self.Unfreeze() - elif name=="active": - if value: - self.Activate() - else: - self.Deactivate() - elif name=="visible": - if value: - self.Show() - else: - self.Hide() - elif name=="minx": - self.Setminsize (value,self.__miny) - elif name=="miny": - self.Setminsize (self.__minx,value) - elif name=="maxx": - self.Setminsize (value,self.__maxy) - elif name=="maxy": - self.Setminsize (self.__maxx,value) - elif name=="title": - self.Settitle (value) - elif name=="c1": - self.__box.c1=value - elif name=="c2": - self.__box.c2=value - else: - self.__dict__ [name]=value - - - def __getattr__(self,name): - if name=="x": - (tx,ty,tw,th)=forms.get_geometry (self.id) - return tx - elif name=="y": - (tx,ty,tw,th)=forms.get_geometry (self.id) - return ty - elif name=="w": - (tx,ty,tw,th)=forms.get_geometry (self.id) - return tw - elif name=="h": - (tx,ty,tw,th)=forms.get_geometry (self.id) - return th - elif name=="minx": - return self.__minx - elif name=="miny": - return self.__miny - elif name=="maxx": - return self.__maxx - elif name=="maxy": - return self.__maxy - elif name=="vmode": - (vmode,active,dblbuffer,frozen,visible,border,other)=forms.get_attr(self.id) - return vmode - elif name=="active": - (vmode,active,dblbuffer,frozen,visible,border,other)=forms.get_attr(self.id) - return active - elif name=="dblbuffer": - (vmode,active,dblbuffer,frozen,visible,border,other)=forms.get_attr(self.id) - return dblbuffer - elif name=="frozen": - (vmode,active,dblbuffer,frozen,visible,border,other)=forms.get_attr(self.id) - return frozen - elif name=="visible": - (vmode,active,dblbuffer,frozen,visible,border,other)=forms.get_attr(self.id) - return visible - elif name=="border": - (vmode,active,dblbuffer,frozen,visible,border,other)=forms.get_attr(self.id) - return border - elif name=="other": - (vmode,active,dblbuffer,frozen,visible,border,other)=forms.get_attr(self.id) - return other - elif name=="title": - return self.Gettitle () - elif name=="c1": - return self.__box.c1 - elif name=="c2": - return self.__box.c2 - def __del__(self): - pass -#I'm not sure if this is a nice thing to do -# forms.free (self.id) - - -############################################################################### -#This is the XFObject class, for generic XForms objects - -class XFObject: - def __init__ (self): - self.id=0 - self.__c1=11 - self.__c2=15 - def Setgravity (self,a,b): - objects.set_gravity (self.id,a,b) - def Redraw (self): - objects.redraw (self.id) - def Scale (self,x,y): - objects.scale (self.id,x,y) - def Show (self): - objects.show (self.id) - self.Setcolor (self.__c1,self.__c2) - def Hide (self): - objects.hide (self.id) - def Delete(self): - objects.delete (self.id) - def Setcolor (self,c1,c2): - self.__c1=c1 - self.__c2=c2 - objects.set_color (self.id,c1,c2) - def Activate (self): - objects.activate (self.id) - def Deactivate (self): - objects.deactivate (self.id) - def __setattr__ (self,name,value): - if name=="boxtype": - objects.set_boxtype (self.id,value) - elif name=="bw": - objects.set_bw (self.id,value) - elif name=="labelsize": - objects.set_ls (self.id,value) - elif name=="labelstyle": - objects.set_lstyle (self.id,value) - elif name=="labelcolor": - objects.set_lcol (self.id,value) - elif name=="labelalign": - objects.set_lalign (self.id,value) - elif name=="label": - objects.set_label (self.id,value) - elif name=="shortcut": - objects.set_shortcut (self.id,value,1) - elif name=="dblbuffer": - objects.set_dblbuffer(self.id,value) - elif name=="x": - (tx,ty,tw,th)=objects.get_geometry (self.id) - objects.set_geometry (self.id,value,ty,tw,th) - elif name=="y": - (tx,ty,tw,th)=objects.get_geometry (self.id) - objects.set_geometry (self.id,tx,value,tw,th) - elif name=="w": - (tx,ty,tw,th)=objects.get_geometry (self.id) - objects.set_geometry (self.id,tx,ty,value,th) - elif name=="h": - (tx,ty,tw,th)=objects.get_geometry (self.id) - objects.set_geometry (self.id,tx,ty,tw,value) - elif name=="resize": - objects.set_resize (self.id,value) - elif name=="c1": - self.Setcolor (value,self.__c2) - elif name=="c2": - self.Setcolor (self.__c1,value) - else: - self.__dict__ [name]=value - def __getattr__(self,name): - if name=="c1": - return self.__c1 - elif name=="c2": - return self.__c2 - - def __del__ (self): -#probably a BAD idea - objects.free(self.id) - - -############################################################################### -# The Bitmap Class - -class Bitmap(XFObject): - def __init__(self,t=0,x=10,y=10,w=100,h=100,l="Bitmap"): - XFObject.__init__ (self) - self.id=bitmaps.create(t,x,y,w,h,l) - def Load (self,file): - bitmaps.set_file (self.id,file) - def __setattr__ (self,name,value): - if name=="background": - objects.set_color(self.id,value,0) - elif name=="foreground": - objects.set_lcol(self.id,value) - else: - XFObject.__setattr__(self,name,value) - - -############################################################################### -# The Pixmap Class - -class Pixmap(XFObject): - def __init__(self,t=0,x=10,y=10,w=100,h=100,l="Pixmap"): - XFObject.__init__ (self) - self.id=pixmaps.create(t,x,y,w,h,l) - def Load (self,file): - pixmaps.set_file (self.id,file) - def __setattr__ (self,name,value): - if name=="background": - objects.set_color(self.id,value,0) - elif name=="foreground": - objects.set_lcol(self.id,value) - else: - XFObject.__setattr__(self,name,value) - - -############################################################################### -# The Box Class - -class Box(XFObject): - def __init__(self,t=6,x=10,y=10,w=90,h=90,l="Box"): - XFObject.__init__ (self) - self.id=box.create(t,x,y,w,h,l) -############################################################################### -# The Browser class -# -# I want the Browser class to act just like what it is: a list -# only with a "few" more methods and stuff - -class Browser (XFObject): - def __init__(self,t=1,x=10,y=10,w=90,h=120,l="Browser"): - XFObject.__init__ (self) - self.id=browser.create(t,x,y,w,h,l) - _objects[str(self.id)]=self - self.cb=_nocb - self.args=self - def Add(self,line): - browser.add_line (self.id,line) - def Addto(self,line): - browser.addto (self.id,line) - def Insert(self,n,line): - browser.insert_line(self.id,n,line) - def Delete(self,n): - browser.delete_line(self.id,n) - def Replace(self,n,line): - browser.replace_line(self.id,n,line) - def Getline(self,n): - return browser.get_line (self.id,n) - def Load(self,path): - return browser.load (self.id,path) - def Select(self,n): - browser.select_line (self.id,n) - def Deselect(self,n): - browser.deselect_line (self.id,n) - def Deselectall(self): - browser.deselect(self.id) - def Isselected(self,n): - return browser.isselected_line(self.id,n) - def Gettopline(self): - return browser.get_topline(self.id) - def Get(self): - return browser.get(self.id) - def Getmaxline(self): - return browser.get_maxline(self.id) - def Screenlines(self): - return browser.get_screenlines(self.id) - def Settopline(self,n): - browser.set_topline(self.id,n) - def Setfontsize(self,n): - browser.set_fontsize(self.id,n) - def Setfontstyle(self,n): - browser.set_fontstyle(self.id,n) - def Setspecialkey(self,c): - browser.set_specialkey(self.id,c) - def Setleftslider(self,l): - browser.set_leftslider(self.id,l) - def __setattr__ (self,name,value): - if name=="leftslider": - self.Setleftslider(value) - elif name=="specialkey": - self.Setspecialkey(value) - elif name=="fontstyle": - self.Setfontstyle(value) - elif name=="fontsize": - self.Setfontsize(value) - elif name=="topline": - self.Settopline(value) - else: - XFObject.__setattr__(self,name,value) - - - -############################################################################### -#This is the Button class. - -class Button(XFObject): - def __init__(self,t=0,x=10,y=10,w=90,h=30,l="Button"): - XFObject.__init__ (self) - self.id=button.create(t,x,y,w,h,l) - _objects[str(self.id)]=self - self.cb=_nocb - self.args=self - def __call__(self,v=-1): -# I think this is nice: if you have a button called b, -# b() returns the button's value -# b(1) or b(0) SETS the button value. -# You can also set/get it with b.value, though - if v==-1: - return button.get(self.id) - else: - button.set (self.id,v) - - def __setattr__ (self,name,value): - if name=="value": - self(value) - else: - XFObject.__setattr__(self,name,value) - - def __getattr__ (self,name): - if name=="value": - return self() - elif name=="numb": - return button.get_numb (self.id) - pass - else: - return XFObject.__getattr__(self,name) - -############################################################################### -# This is the Roundbutton class - -class Roundbutton (Button): - def __init__(self,t=0,x=10,y=10,w=90,h=30,l="Roundbutton"): - XFObject.__init__ (self) - self.id=button.create_round(t,x,y,w,h,l) - _objects[str(self.id)]=self - self.cb=_nocb - self.args=self -############################################################################### -# This is the Lightbutton class - -class Lightbutton (Button): - def __init__(self,t=0,x=10,y=10,w=90,h=30,l="Lightbutton"): - XFObject.__init__ (self) - self.id=button.create_light(t,x,y,w,h,l) - _objects[str(self.id)]=self - self.cb=_nocb - self.args=self -############################################################################### -# This is the Checkbutton class - -class Checkbutton (Button): - def __init__(self,t=0,x=10,y=10,w=90,h=30,l="Checkbutton"): - XFObject.__init__ (self) - self.id=button.create_check(t,x,y,w,h,l) - _objects[str(self.id)]=self - self.cb=_nocb - self.args=self -############################################################################### -# This is the Bitmapbutton class - -class Bitmapbutton (Button): - def __init__(self,t=0,x=10,y=10,w=90,h=30,l="Bitmapbutton"): - XFObject.__init__ (self) - self.id=button.create_bitmap(t,x,y,w,h,l) - _objects[str(self.id)]=self - self.cb=_nocb - self.args=self -############################################################################### -# This is the Pixmapbutton class - -class Pixmapbutton (Button): - def __init__(self,t=0,x=10,y=10,w=90,h=30,l="Pixmapbutton"): - XFObject.__init__ (self) - self.id=button.create_pixmap(t,x,y,w,h,l) - _objects[str(self.id)]=self - self.cb=_nocb - self.args=self -############################################################################### -# This is the Choice Class -#This one needs a getattr, setattr pair - -class Choice (XFObject): - def __init__(self,t=0,x=10,y=10,w=90,h=30,l="Choice"): - XFObject.__init__ (self) - self.id=choice.create(t,x,y,w,h,l) - _objects[str(self.id)]=self - self.cb=_nocb - self.args=self - def Clear (self): - choice.clear(self.id) - def Addto (self,s): - choice.addto(self.id,s) - def Replace (self,n,s): - choice.replace(self.id,n,s) - def Delete (self,n): - choice.delete(self.id,n) - def Set (self,n): - choice.set(self.id,n) - def Settext (self,s): - choice.set_text (self.id,s) - def Get (self): - return choice.get (self.id) - def Getmaxitems (self): - return choice.get_maxitems (self.id) - def Gettext (self): - return choice.get_text (self.id) - def Setfontsize (self,n): - choice.set_fontsize(self.id,n) - def Setalign (self,n): - choice.set_align (self.id,n) - def Setmode (self,n,m): - choice.set_item_mode (self.id,n,m) - -############################################################################## -# This is the clock class - -class Clock (XFObject): - def __init__(self,t=0,x=10,y=10,w=90,h=90,l="Clock"): - XFObject.__init__ (self) - self.id=clock.create(t,x,y,w,h,l) - def Get (self): - return clock.get (self.id) -############################################################################## -# This is the counter class - - -class Counter (XFObject): - def __init__(self,t=0,x=10,y=10,w=90,h=30,l="Counter"): - XFObject.__init__ (self) - self.id=counter.create(t,x,y,w,h,l) - _objects[str(self.id)]=self - self.cb=_nocb - self.args=self - def Set (self,v): - counter.set_value (self.id,v) - def Setbounds (self,min,max): - counter.set_bounds (self.id,min,max) - def Setstep (self,s1,s2): - counter.set_step (self.id,s1,s2) - def Setprecision (self,p): - counter.set_precision (self.id,p) - def Get (self): - return counter.get_value (self.id) - def Setreturn (self,v): - counter.set_return (self.id,v) - -############################################################################## -# This is the Dial class - -class Dial (XFObject): - def __init__(self,t=0,x=10,y=10,w=60,h=60,l="Dial"): - XFObject.__init__ (self) - self.id=dial.create(t,x,y,w,h,l) - _objects[str(self.id)]=self - self.cb=_nocb - self.args=self - def Set (self,v): - dial.set_value(self.id,v) - def Get (self): - return dial.get_value (self.id) - def Setbounds (self,min,max): - dial.set_bounds (self.id,min,max) - def Getbounds (self): - return dial.get_bounds (self.id) - def Setstep (self,v): - dial.set_step (self.id,v) - def Setreturn (self,v): - dial.set_return (self.id,v) - -############################################################################### -# This is the Frame class -class Frame (XFObject): - def __init__(self,t=0,x=10,y=10,w=60,h=60,l="Frame"): - XFObject.__init__ (self) - self.id=frame.create(t,x,y,w,h,l) -############################################################################### -# This is the Input class - - -class Input (XFObject): - def __init__(self,t=0,x=10,y=10,w=60,h=30,l="Input"): - XFObject.__init__ (self) - self.id=input.create(t,x,y,w,h,l) - _objects[str(self.id)]=self - self.cb=_nocb - self.args=self - def Set (self,s): - input.set (self.id,s) - def Setcolor (self,c1,c2): - input.set_color (self.id,c1,c2) - def Get (self): - return input.get(self.id) - def Setreturn (self,v): - input.set_return (self.id,v) - def Setscroll (self,v): - input.set_scroll (self.id,v) - def Setcursorpos (self,x,y=1): - input.set_cursorpos (self.id,x,y) - def Setselected (self,v): - input.set_selected (self.id,v) - def Setselectedrange (self,x1,x2): - input.set_selected_range (self.id,x1,x2) - def __setattr__ (self,name,value): - if name=="value": - self.Set(value) - else: - XFObject.__setattr__(self,name,value) - - def __getattr__ (self,name): - if name=="value": - return self.Get() - else: - return XFObject.__getattr__(self,name) - - -############################################################################### -# This is the Menu class - -class Menu (XFObject): - def __init__(self,t=0,x=10,y=10,w=60,h=30,l="Menu"): - XFObject.__init__ (self) - self.id=menu.create(t,x,y,w,h,l) - _objects[str(self.id)]=self - self.cb=_nocb - self.args=self - def Clear (self): - menu.clear (self.id) - def Set (self,s): - menu.set (self.id,s) - def Addto (self,s): - menu.addto(self.id,s) - def Replace (self,n,s): - menu.replace_item (self.id,n,s) - def Delete (self,n): - menu.delete_item (self.id,n) - def Setshortcut (self,n,s): - menu.set_item_shortcut (self.id,n,s) - def Setmode (self,n,m): - menu.set_item_mode (self.id,n,m) - def Showsymbol (self,n): - menu.show_symbol (self.id,n) - def Get (self): - return menu.get (self.id) - def Getmaxitems (self): - return menu.get_maxitems (self.id) - def Gettext (self): - return menu.get_text (self.id) - -############################################################################### -# This is the Positioner class - -class Positioner (XFObject): - def __init__(self,t=0,x=10,y=10,w=60,h=60,l="Positioner"): - XFObject.__init__ (self) - self.id=positioner.create(t,x,y,w,h,l) - _objects[str(self.id)]=self - self.cb=_nocb - self.args=self - def Setx (self,v): - positioner.set_xvalue (self.id,v) - def Sety (self,v): - positioner.set_yvalue (self.id,v) - def Setxbounds (self,x1,x2): - positioner.set_xbounds (self.id,x1,x2) - def Setybounds (self,y1,y2): - positioner.set_ybounds (self.id,y1,y2) - def Setxstep (self,v): - positioner.set_xstep (self.id,v) - def Setystep (self,v): - positioner.set_ystep (self.id,v) - def Getx (self): - return positioner.get_xvalue (self.id) - def Gety (self): - return positioner.get_yvalue (self.id) - def Getxbounds (self): - positioner.get_xbounds (self.id) - def Getybounds (self): - positioner.get_ybounds (self.id) - def Setreturn (self,v): - positioner.set_return (self.id,v) -############################################################################### -# This is the Slider class - -class Slider (XFObject): - def __init__(self,t=0,x=10,y=10,w=60,h=30,l="Slider"): - XFObject.__init__ (self) - self.id=slider.create(t,x,y,w,h,l) - _objects[str(self.id)]=self - self.cb=_nocb - self.args=self - def Get (self): - return slider.get_value (self.id) - def Set (self,v): - slider.set_value(self.id,v) - def Getbounds (self): - return slider.get_bounds (self.id) - def Setbounds (self,v1,v2): - slider.set_bounds(self.id,v1,v2) - def Setreturn (self,v): - slider.set_return (self.id,v) - def Setstep (self,v): - slider.set_step (self.id,v) - def Setsize (self,v): - slider.set_size (self.id,v) - -############################################################################### -# This is the Valslider class - -class Valslider (Slider): - def __init__(self,t=0,x=10,y=10,w=60,h=30,l="Valslider"): - XFObject.__init__ (self) - self.id=slider.create_val(t,x,y,w,h,l) - _objects[str(self.id)]=self - self.cb=_nocb - self.args=self - def Setprecision (self,v): - slider.set_precision (self.id,v) - -############################################################################## -# This is the Timer class - -class Timer (XFObject): - def __init__(self,t=1,x=10,y=10,w=60,h=30,l="Timer"): - XFObject.__init__ (self) - self.id=timer.create(t,x,y,w,h,l) - _objects[str(self.id)]=self - self.cb=_nocb - self.args=self - def Set (self,v): - timer.set(self.id,v) - def Get (self): - return timer.get (self.id)