2400
Comentário: Primeira alteracao (inclusao)
|
2490
+ (#!python) +windows
|
Deleções são marcadas assim. | Adições são marcadas assim. |
Linha 1: | Linha 1: |
#pragma section-numbers off | #pragma section-numbers on |
Linha 8: | Linha 8: |
E em Windows, que pasta fica as informações da bateria? --LeonardoGregianin |
|
Linha 11: | Linha 14: |
#!python | |
Linha 51: | Linha 55: |
Volta para CookBook.#\ | Volta para CookBook. |
1. Receita: BatteryMonitor
Esta receita apesar de muito simples aborda alguns pontos uteis aos iniciantes na linguagem Python (como eu por exemplo) Acesso a arquivos texto, orientacao a objetos, Tkinter, agendamento de execucao de uma funcao, entre outras coisas. O BatteryMonitor foi escrito com o intuito de monitorar a bateria de um notebook utilizando para isso os recursos APM (Advanced Power Managment) existentes no kernel Linux, se olharem o codigo verao que realmente eh muito facil acessar estas informacoes, independente da linguagem utilizada.
E em Windows, que pasta fica as informações da bateria? --LeonardoGregianin
1.1. Código
1 #!/usr/bin/env python
2 import Tkinter, sys
3 class window:
4 def __init__(self): #constructor
5 self.window = Tkinter.Tk()
6 self.window.title("APM Monitor")
7 self.frame = Tkinter.Frame(self.window)
8 self.label = Tkinter.Label(self.frame)
9 self.button = Tkinter.Button(self.frame, text="Exit", command=sys.exit)
10
11 def read_apm(self): #le o arquivo /proc/apm onde ficam as informacoes
12 apm = file('/proc/apm').readline().split(' ') # da um split junto da leitura
13 return( { 'ac': apm[3], 'charge': apm[6] } ) # retorna um dicionario com as informacoes
14
15 def set_params(self):
16 params = self.read_apm()
17 ac = params['ac']
18 charge = params['charge'] # guarda o valor da carga da bateria
19 if ac == "0x01" : ac = "on-line" # verifica a bateria e diz se esta on-line
20 else: ac = "off-line" # off-line (ninguem ia querer ver 0x01 ou 0x00 :)
21 self.label.configure(text="AC: " + ac + " | Charge: " + charge)
22
23 def loop_apm(self):
24 self.set_params()
25 self.window.after(2000, self.loop_apm) #esta parte eu gostei, ele agenda a execucao
26 # dele mesmo para daqui 2 segundos :)
27
28 def packs(self):
29 self.label.pack()
30 self.button.pack() # packeia tudo :)
31 self.frame.pack(expand="true")
32
33 if __name__=="__main__":
34 monitor = window()
35 monitor.packs()
36 monitor.loop_apm()
37 monitor.frame.mainloop()
Volta para CookBook.