#-*- coding:utf-8 -*-
import Tkinter
import threading
import time
from libs import util
from libs.db import reds
from libs.widnows import cW


class Title():

    def __init__(self,amount,msg):
        '''像素单元'''
        self.relWidthUnit = 400 / float(1920)
        self.relHeightUnit =200 / float(1080)
        self.relTextUnit =100 / float(1920*1080)
        self.relText2Unit =50 / float(1920*1080)
        self.top = Tkinter.Tk()
        self.top.title('xlife')
        '''禁止最大化'''
        self.top.resizable(False, False)
        '''置顶'''
        self.top.wm_attributes('-topmost', 1)
        '''获取系统分辨率'''
        self.w=self.top.winfo_screenwidth()
        self.h=self.top.winfo_screenheight()
        self.top.bind('<Button-1>',self.callback)
        self.top.geometry('{}x{}+{}+2'.format(int(self.relWidthUnit*self.w),int(self.relHeightUnit*int(self.h)),int(self.w-self.relWidthUnit*self.w)))  #初始化窗口大小
        self.top.attributes("-alpha", 0.6)#窗口透明度60 %
        self.label = Tkinter.Label(self.top, text=amount, font='Helvetica -{} bold'.format(int(self.relTextUnit*self.h*self.w)))  # 创建标签
        self.label2 = Tkinter.Label(self.top, text=msg, font='Helvetica -{} bold'.format(int(self.relTextUnit*self.h*self.w)),bg='WhiteSmoke')  # 创建标签
        self.label.pack(fill=Tkinter.Y, expand=1)  # 填充到界面
        self.label2.pack(fill=Tkinter.Y, expand=1)  # 填充到界面

    def callback(self,event):
        cW.swh_window()

    def display(self):
        # 进入消息循环
        self.top.mainloop()

    def wait(self):

        while True:
            try:
                task = reds.blpop(util.get_mac_address())
                if str(task[1]).find(',') > -1:
                    task = list(str(task[1]).split(','))
                    self.label.config(text='%.2f'%(float(task[0])))
                    t2 = threading.Thread(target=self.default)
                    t2.setName('titleDefault')
                    t2.setDaemon(True)
                    print '1.线程{}状态:{};{}'.format(t2.getName(), t2.isAlive(), t2.isDaemon())
                    if task[2]=='1':
                        self.label2.config(text=task[1],bg='green')
                        t2.start()
                    elif task[2]=='0':
                        self.label2.config(text=task[1],bg='yellow')
                    elif task[2]=='-1':
                        self.label2.config(text=task[1], bg='red')
                        t2.start()
                    elif task[2]=='-2':
                        self.label2.config(text=task[1],bg='yellow')
                        t2.start()
                    else:
                        self.label2.config(text=task[1])
                    print '2.线程{}状态:{};{}'.format(t2.getName(), t2.isAlive(), t2.isDaemon())
                else:
                    print util.get_time()+'   received window ping .'
            except Exception:
                continue

    def default(self):
        time.sleep(3)
        self.label.config(text='%.2f' % (0.00))
        self.label2.config(text='AI小助手',bg='WhiteSmoke')

if __name__ == '__main__':
    Title('10.00','正在支付...').display()

注意:wait函数需要多线程触发,因为tkinter的display()属于消息循环,消息的显示需要外部触发,我这里用的是redis的消息队列,实时获取pyhook传递过来的内容。