Hi everyone,
I have developed a python script which uses PyQt to draw an icon on the notification bar. When I run the script, it works fine, but when I try to run it as a windows service nothing appears on the notification bar. The service works but does not show the icon on the panel.
Is there any possibility to show this icon when it is run as a service?
this is the code
I have developed a python script which uses PyQt to draw an icon on the notification bar. When I run the script, it works fine, but when I try to run it as a windows service nothing appears on the notification bar. The service works but does not show the icon on the panel.
Is there any possibility to show this icon when it is run as a service?
this is the code
import win32service import win32serviceutil import win32event import sys from PyQt4.QtGui import QApplication, QIcon, QMainWindow, QSystemTrayIcon class PySvc(win32serviceutil.ServiceFramework): _svc_name_ = "BasculaSap" #nombre del servicio _svc_display_name_ = "BASCULA_SAP" #nombre que se muestra en la lista de servicios de windows #Esta es la descripcion del servicio def __init__(self, args): win32serviceutil.ServiceFramework.__init__(self,args) self.hWaitStop = win32event.CreateEvent(None, 0, 0, None) # el nucleo del servicio donde se ejecutan las ordenes def SvcDoRun(self): import servicemanager import time import sys import serial import win32event import pymssql import math import sys from PyQt4.QtGui import QApplication, QIcon, QMainWindow, QSystemTrayIcon class MainWindow(QMainWindow): def __init__(self): QMainWindow.__init__(self) def chk_peticion_BBDD(): try: conn=pymssql.connect(host=host_,user=user_,password=password_,database='sgci') cursor_= conn.cursor() cursor_.execute("select * from BASCULA_SGCI where bitVacio=0") nrow=0 for row in cursor_: nrow=nrow+1 cursor_.close() return nrow except: return 0 def upd_BBDD_Peso(peso): try: conn_w=pymssql.connect(host=host_,user=user_,password=password_,database='sgci') cursor_w= conn_w.cursor() pesoint = float(peso) print pesoint cursor_w.execute("update BASCULA_SGCI set peso=%f , bitVacio=1 where bitVacio = 0 ",(pesoint)) conn_w.commit() cursor_w.close() except: return def isNumber(x): try: n=int(x) return 0 == n*0 except: return False def getWeight(): try: ser = serial.Serial('COM1',9600,timeout=1,bytesize=serial.EIGHTBITS,parity=serial.PARITY_NONE,stopbits=serial.STOPBITS_ONE) ser.open() ser.flushInput() ser.flushOutput() ser.write(chr(22)) time.sleep(2) peso=ser.readline() ser.write(chr(22)) time.sleep(2) peso=ser.readline() #print "peso funcion " + peso #ser.close() return peso except: ser.close() return -1 app = QApplication(sys.argv) window = MainWindow() window.systray = QSystemTrayIcon(QIcon("icon1.ico"),window) rc=None i=0 while rc != win32event.WAIT_OBJECT_0: nrows_peticiones = chk_peticion_BBDD() if nrows_peticiones > 0: peso=getWeight() #ser.readline() if isNumber(peso): print "peso ->" + peso.strip() + " Kg" window.show() upd_BBDD_Peso(peso) time.sleep(2) if i>=1: window.systray.setIcon(QIcon("icon2.ico")) if i>=2: window.systray.setIcon(QIcon("icon1.ico")) i=0 i=i+1 rc = win32event.WaitForSingleObject(self.hWaitStop, 5000) def SvcStop(self): # tell the SCM we're shutting down self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)