2011-07-10, 19:08
  #1
Medlem
AquaRegias avatar
Leker lite med pyHook, men har tyvrr inte hittat s mycket dokumentation.

Jag har ett simpelt program som visar en timer som rknar ned varje sekund, denna timer nollstlls nr man klickar med musen:

Kod:
from Tkinter import *
import pyHook

class Main:
	def __init__(self):
		self.root = Tk()
		self.root.protocol("WM_DELETE_WINDOW", self.onClose)
		self.root.title("Timer")
	
		self.timerView = Text(self.root, 
						background="#000", 
						foreground="#0C0", 
						font=("Arial", 200), 
						height=1, 
						width=3)
		self.timerView.pack(fill=BOTH, expand=1)
	
		self.hm = pyHook.HookManager()
		self.hm.SubscribeMouseAllButtonsDown(self.reset)
		self.hm.HookMouse()
		
		self.reset()
		self.tick()
		
		self.root.mainloop()
		
	def onClose(self):
		self.root.destroy()
		
	def reset(self, event=None):
		self.timer = 300
		
		return True
		
	def tick(self):
		self.timerView.delete(1.0, END)
		self.timerView.insert(END, self.threeDigits(self.timer))

		self.timer = self.timer - 1 if self.timer > 0 else 0
		self.root.after(1000, self.tick)
		
	def threeDigits(self, number):
		number = str(number)
		while len(number) < 3:
			number = "0" + number
			
		return number
		
if __name__ == "__main__":
	Main()

Detta fungerar rtt s bra, nda tills man ska flytta fnstret. r man inte snabb nog s fryser musen fast i 3-4 sekunder, sen slutar programmet att svara.

Det problemet frsvinner om man kommenterar bort:

Kod:
self.hm.HookMouse()

eller:

Kod:
self.tick()

i konstruktorn, s min gissning r att Tkinter krockar med pyHook p ngot stt.

Ngon som har en bra lsning?
Citera
2011-07-16, 20:05
  #2
Medlem
AquaRegias avatar
Ingen?
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in