Temporizador
Josu Rodriguez Vilda
jrvilda en gmail.com
Lun Sep 11 23:31:46 CEST 2006
Arnau Sanchez wrote:
>
> Josu Rodriguez Vilda escribió:
>
>> Hola amigos,
>>
>> Tengo echa una aplicación que cada vez que se pulsa un botón revisa
>> si existe ciertos ficheros, servicios y claves de registros dados.
>> Ahora lo que me gustarla que esa revisión fuese automática cada 3 o 5
>> segundos.
>> Osea que si el botón esta pinchado, pues cada 3 segundos lance la
>> función.
>> Sabéis como podría hacerlo?
>>
>
> ¿Puedes ampliar un poco la información? Por ejemplo, ¿con qué GUI lo
> estás haciendo?
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
>
Estoy empezando con esto de python , por lo que el codigo no creo que
este ni muy depurado ni siquiera organizado, pero si puede ayudar a
alguien pues hay va.
Lo que hace el programita es leer un fichero ini, y carga las diferentes
secciones del fichero para comprobar si existen los ficheros o carpetas,
los servicios. o las claves de registro .
-------------------------------------------Frame1.py
#Boa:Frame:Frame1
import wx,ConfigParser,os,wx.lib.buttons,win32api,win32con,win32service,time
import wx.lib.foldpanelbar as fpb
def create(parent):
return Frame1(parent)
[wxID_FRAME1, wxID_FRAME1ABRIR, wxID_FRAME1CARGAR, wxID_FRAME1GENBUTTON1,
wxID_FRAME1PANEL1, wxID_FRAME1STATICTEXT1, wxID_FRAME1TEXTCTRL1,
wxID_FRAME1WINDOW1,
] = [wx.NewId() for _init_ctrls in range(8)]
[wxID_FRAME1TOOLBAR1TOOLS0, wxID_FRAME1TOOLBAR1TOOLS1,
] = [wx.NewId() for _init_coll_toolBar1_Tools in range(2)]
class Frame1(wx.Frame):
def _init_ctrls(self, prnt):
# generated method, don't edit
wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
pos=wx.Point(491, 139), size=wx.Size(385, 134),
style=wx.TAB_TRAVERSAL | wx.WANTS_CHARS | wx.CAPTION |
wx.CLOSE_BOX | wx.SYSTEM_MENU | wx.STATIC_BORDER | wx.MINIMIZE_BOX,
title='Berki-rev')
self.SetClientSize(wx.Size(377, 107))
self.SetMaxSize(wx.Size(385, 750))
self.SetForegroundColour(wx.Colour(100, 221, 131))
self.SetIcon(wx.Icon('cberki.ico',wx.BITMAP_TYPE_ICO))
self.panel1 = wx.Panel(id=wxID_FRAME1PANEL1, name='panel1',
parent=self,
pos=wx.Point(0, 0), size=wx.Size(377, 107),
style=wx.TAB_TRAVERSAL)
self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1,
label='Archivo de configuracion :', name='staticText1',
parent=self.panel1, pos=wx.Point(24, 48),
size=wx.Size(145, 13),
style=0)
self.staticText1.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL,
wx.BOLD, False,
'Tahoma'))
self.staticText1.SetForegroundColour(wx.Colour(0, 0, 0))
self.textCtrl1 = wx.TextCtrl(id=wxID_FRAME1TEXTCTRL1,
name='textCtrl1',
parent=self.panel1, pos=wx.Point(24, 64),
size=wx.Size(264, 20),
style=0, value='')
self.Abrir = wx.lib.buttons.GenButton(ID=wxID_FRAME1ABRIR,
label='..',
name='Abrir', parent=self.panel1, pos=wx.Point(300, 72),
size=wx.Size(25, 20), style=0)
self.Abrir.Bind(wx.EVT_BUTTON, self.OnAbrirButton,
id=wxID_FRAME1ABRIR)
self.Cargar = wx.lib.buttons.GenButton(ID=wxID_FRAME1CARGAR,
label='{}',
name='Cargar', parent=self.panel1, pos=wx.Point(335, 72),
size=wx.Size(25, 20), style=0)
self.Cargar.Enable(False)
self.Cargar.Bind(wx.EVT_BUTTON, self.OnCargarButton,
id=wxID_FRAME1CARGAR)
self.window1 = wx.Window(id=wxID_FRAME1WINDOW1, name='window1',
parent=self.panel1, pos=wx.Point(16, 112),
size=wx.Size(344, 500),
style=0)
self.genButton1 = wx.lib.buttons.GenButton(ID=wxID_FRAME1GENBUTTON1,
label='?', name='genButton1', parent=self.panel1,
pos=wx.Point(300, 40), size=wx.Size(59, 25), style=0)
def __init__(self, parent):
self._init_ctrls(parent)
def OnAbrirButton(self, event):
dlg = wx.FileDialog(self, "Selecciona el ejecutable", ".", "",
"Configuracion (*.ini)|*.ini|Todos (*.*)|*.*", wx.OPEN)
try:
if dlg.ShowModal() == wx.ID_OK:
filename = dlg.GetPath()
# Your code
self.textCtrl1.SetValue(filename)
finally:
dlg.Destroy()
self.Cargar.Enable(True)
event.Skip()
def OnCargarButton(self, event):
cp = ConfigParser.ConfigParser()
cp.read(self.textCtrl1.GetValue())
lista=cp.sections()
self.SetClientSize(wx.Size(385, 750))
self.window1.DestroyChildren()
pnl = fpb.FoldPanelBar(self.window1, wx.ID_ANY,
wx.DefaultPosition, wx.Size(350, 1000),
fpb.FPB_DEFAULT_STYLE | fpb.FPB_VERTICAL)
item = pnl.AddFoldPanel("Archivos & Carpetas", collapsed=False)
for opt,value in cp.items("archivos&carpetas"):
if (os.access(value,os.F_OK)) == True:
resultado = " existe"
prueba1=wx.StaticText(item, wx.ID_ANY,
"..."+value[-45:]+" "+resultado)
prueba1.SetForegroundColour(wx.Colour(0, 128, 64))
pnl.AddFoldPanelWindow(item, prueba1)
else:
resultado = " No existe"
prueba1=wx.StaticText(item, wx.ID_ANY,
"..."+value[-45:]+" "+resultado)
prueba1.SetForegroundColour(wx.Colour(255, 0, 0))
pnl.AddFoldPanelWindow(item, prueba1)
pnl.AddFoldPanelSeparator(item)
## item = pnl.AddFoldPanel("Ficheros", collapsed=False)
## for opt,value in cp.items("Ficheros"):
## try:
## print value
## f = open(value,"r")
## resultado = " existe"
## except IOError:
## resultado = " no existe"
##
## pnl.AddFoldPanelWindow(item, wx.StaticText(item,
wx.ID_ANY, "..."+value[-45:]+" "+resultado))
## pnl.AddFoldPanelSeparator(item)
item = pnl.AddFoldPanel("Registro de Windows", collapsed=False)
for opt,value in cp.items("Registro"):
try:
aReg = win32api.RegConnectRegistry(None,
win32con.HKEY_CURRENT_USER)
aKey = win32api.RegOpenKeyEx(aReg, value)
win32api.RegCloseKey(aKey)
resultado = " existe"
prueba1=wx.StaticText(item, wx.ID_ANY,
"..."+value[-45:]+" "+resultado)
prueba1.SetForegroundColour(wx.Colour(0, 128, 64))
pnl.AddFoldPanelWindow(item, prueba1)
except:
resultado = " No existe"
prueba1=wx.StaticText(item, wx.ID_ANY,
"..."+value[-45:]+" "+resultado)
prueba1.SetForegroundColour(wx.Colour(255, 0, 0))
pnl.AddFoldPanelWindow(item, prueba1)
pnl.AddFoldPanelSeparator(item)
item = pnl.AddFoldPanel("Servicios", collapsed=False)
for opt,value in cp.items("Servicios"):
try:
scmhandle = win32service.OpenSCManager(None, None,
win32service.SC_MANAGER_ALL_ACCESS)
handle= win32service.OpenService(scmhandle, value,
win32service.SERVICE_ALL_ACCESS)
prn= win32service.QueryServiceStatus(handle)
if prn[1] == win32service.SERVICE_STOPPED:
resultado = " Esta parado"
prueba1=wx.StaticText(item, wx.ID_ANY,
"..."+value[-45:]+" "+resultado)
prueba1.SetForegroundColour(wx.Colour(255, 0, 0))
pnl.AddFoldPanelWindow(item, prueba1)
elif prn[1] == win32service.SERVICE_RUNNING:
resultado = " Esta Iniciado"
prueba1=wx.StaticText(item, wx.ID_ANY,
"..."+value[-45:]+" "+resultado)
prueba1.SetForegroundColour(wx.Colour(0, 128, 64))
pnl.AddFoldPanelWindow(item, prueba1)
else :
resultado = " estado desconocido"
prueba1=wx.StaticText(item, wx.ID_ANY,
"..."+value[-45:]+" "+resultado)
prueba1.SetForegroundColour(wx.Colour(255, 255, 128))
pnl.AddFoldPanelWindow(item, prueba1)
except:
resultado = " no existe"
prueba1=wx.StaticText(item, wx.ID_ANY,
"..."+value[-45:]+" "+resultado)
prueba1.SetForegroundColour(wx.Colour(255, 255, 128))
pnl.AddFoldPanelWindow(item, prueba1)
pnl.AddFoldPanelSeparator(item)
self.pnl = pnl
event.Skip()
def OnToolBar1Tools0Tool(self, event):
event.Skip()
---------------------------------
----------------------------------App1.py
#!/usr/bin/env python
#Boa:App:BoaApp
import wx
import Frame1
modules ={'Frame1': [1, 'Main frame of Application', 'Frame1.py']}
class BoaApp(wx.App):
def OnInit(self):
wx.InitAllImageHandlers()
self.main = Frame1.create(None)
self.main.Show()
self.SetTopWindow(self.main)
return True
def main():
application = BoaApp(0)
application.MainLoop()
if __name__ == '__main__':
main()
------------------------------------
-------------------------------Ejemplo.ini
[archivos&carpetas]
a= c:\\Documents and
Settings\\Administrador\\Escritorio\\berki-pandarev\\boot.ini
b= c:\\boot.ini
c= c:\\boot.ini
d= c:\\casa.ini
e= %programfiles%
g= C:\Documents and Settings\Administrador
[Servicios]
c= Faxs
d= Faxs
e= Faxs
[Registro]
a=Software\Microsoft\Internet Explorer\TypedURLs
------------------------------------
Más información sobre la lista de distribución Python-es