xsmile
You can fly higher
xsmile's Blog
iTip开发笔记二

这两天刚给blog搬了家,在域名解析和数据导入上费了大工夫了。同时对Python的学习也异常缓慢囧

iTip的消息有个重要的属性是“时间”,不光要记录日期还要精确到秒。那如何在SQLite中保存时间类型的数据,以及如何在python中使用呢?

iTip的时间是这样一种格式“2008-11-09 18:23:21”,在SQLAlchemy中创建表数据的使用“DateTime”类型,它对应的SQLite中的数据类型为TIMESTAMP。这里要注意的是,SQLite相对于Python,能够接受的数据类型只有一种,那就是datetime。你不能直接将“时间字符串”往SQLite里面送,虽然SQLite里面对于TIMESTAMP的保存实际就是字符串形式。SQLite会自动进行转换。同理,那从数据库中返回的也是datetime类型的数据了。理解了这个就好办了。

来看看datetime下的两个方法。

import datetime

now=datetime.datetime.now()

now输出的话看起来是这样的:2008-11-09 16:40:31.784000
这正是我要保存在数据库中的: 年 -月-日 时:分:秒:毫秒
其中毫秒的信息是不需要的,怎么利用这个时间类型做事情呢,看一看这个方法

Y,M,D,h,m,s,dw,dy,dl=now.timetuple()

timetuple()方法返回一个tuple,包含了time类型中的时间结构。

print "[%s]-[%s]-[%s]-[%s]-[%s]-[%s]-[%s]-[%s]-[%s]"%(Y,M,D,h,m,s,dw,dy,dl)

对应上面的now的输出结果看起来是这样的
[2008]-[11]-[9]-[16]-[40]-[31]-[6]-[314]-[-1]
年 月 日 时 分 秒
后面的”6″表示11月9日是星期日(0代表星期一)
在后面的”314″表示11月9日在是2008年里面的第314天
最后一个数字的含义是有关”if daylight saving time is effect”
“1”表示有效,”0″表示无效,”-1″表示无相关信息。没多大用,基本可以忽略(个人愚见)
呵呵,这样一来就可以利用时间信息做很多事情咯~~

几乎所有的程序都离不开任务栏的显示,wxPython下如何实现呢?来看一下下面这个示例程序

import wx

class iTipTaskBar(wx.TaskBarIcon):
    """继承wx.TaskBarIcon类"""
    def __init__(self, frame):
        """frame是与其关联的窗口"""

        wx.TaskBarIcon.__init__(self)

        self.frame = frame
        #设置任务栏显示图标和鼠标提示信息
        self.SetIcon(wx.Icon('..\\pic\\iTip.png', wx.BITMAP_TYPE_PNG), 'iTip')

        self.Bind(wx.EVT_MENU, self.OnTaskBarActivate, id=1)
        self.Bind(wx.EVT_MENU, self.OnTaskBarDeactivate, id=2)
        self.Bind(wx.EVT_MENU, self.OnTaskBarClose, id=3)

    #覆写CreatePopupMenu函数,添加自定义弹出菜单
    def CreatePopupMenu(self):
        menu = wx.Menu()
        menu.Append(1, 'Show')
        menu.Append(2, 'Hide')
        menu.Append(3, 'Close')
        return menu

    def OnTaskBarClose(self, event):
        self.frame.Close()

    def OnTaskBarActivate(self, event):
        if not self.frame.IsShown():
            self.frame.Show()

    def OnTaskBarDeactivate(self, event):
        if self.frame.IsShown():
            self.frame.Hide()

代码很容易理解吧,使用的时候只需要在主窗口代码中与其关联即可,像下面这样:

self.iTipTB = iTipTaskBar(self)
http://www.xsmile.net/image/itiptask.jpeg
首页      技术      Python      iTip开发笔记二

发表回复

textsms
account_circle
email

xsmile's Blog

iTip开发笔记二
这两天刚给blog搬了家,在域名解析和数据导入上费了大工夫了。同时对Python的学习也异常缓慢囧 iTip的消息有个重要的属性是“时间”,不光要记录日期还要精确到秒。那如何在SQLite中保存时…
扫描二维码继续阅读
2008-11-09