在PyQt中让QTableView的内容居中

QTableView没有直接提供居中文本的方法,需要自己实现,一种解决方案是自定义Delegate。

代码如下:

ID = 0
TYPE = 1
NAME = 3

class CenterDelegate(QItemDelegate):

def __init__(self, parent=None):

QItemDelegate.__init__(self, parent)

def paint(self, painter, option, index):

painter.save()
painter.drawText(option.rect, Qt.AlignCenter, index.data(Qt.DisplayRole).toString())
painter.restore()

class TestDialog(QDialog):

def __init__(self, parent=None):

self.testView.setItemDelegate(CenterDelegate()) # ID和TYPE居中
self.testView.setItemDelegateForColumn(NAME, QItemDelegate()) # NAME不居中

在web2py中新建的controller无法访问怎么办

在web2py的admin后台新建了一个controller,名字是center,
在前台访问/center/时,提示:
invalid function (default/center)
也即center这个新建的contoller无法访问。

如果你的Web服务器采用的是nginx + uwsgi的解决方案,
那么你需要重启uwsgi服务。

在Ubuntu 10.04下可以使用下列命令:

$ sudo /etc/init.d/uwsgi-python restart

Python Web开发框架Pyramid发布1.1版

著名Python Web开发框架Pyramid今天发布了1.1正式版。Pyramid是Pylons Project的核心产品,Pylons Project由前Pylons Web开发框架和repoze.bfg Web开放框架合并而来。

Pyramid 1.1的主要更新如下:

* 支持request.response属性
* 全新的视图自省(view introspection)特性:paster pviews
* 支持静态路由(static routes)
* 默认的HTTP异常视图
* 用http_cache视图配置参数让Pyramid设置HTTP缓存头
* 新特性使得在Pyramid环境中写脚本更容易

更多的更新内容请参阅官方公告:
http://docs.pylonsproject.org/projects/pyramid/1.1/whatsnew-1.1.html

web2py中使用IS_IN_SET不当引起的数据不加载问题

Google关键字:list:string IS_IN_SET form.custom

问题:

Models的db.py中的定义:
Field(‘method’, ‘list:string’, default=’现金’),

db.applications.method.requires = IS_IN_SET((‘现金’, ‘刷卡’, ‘支票’, ‘在线支付’))

View的edit.py中的定义:
{{=form.custom.begin}}
{{=TR(T(‘Registered’) + ‘:’, form.custom.widget.registered)}}
{{=TR(”, form.custom.submit)}}
{{=form.custom.end}}

在生成的表单中,method字段虽然在数据库中保存有值,但在表单中并不加载。

解决方法:

根据网贴
list:string – IS_IN_SET
http://groups.google.com/group/fameisfame/browse_thread/thread/daec8390aa34d4ae/87e1df61f271ed71?lnk=raot
的提示,把代码修改为
db.applications.method.requires = IS_IN_SET((‘现金’, ‘刷卡’, ‘支票’, ‘在线支付’), multiple=True)
即可解决问题。

web2py中datetime本地化引起的验证错误

Google关键字:web2py view datetime localization validate, web2py form.custom localization datetime

问题描述:

db.py中的设置:
Field(‘registered’, ‘datetime’, default=request.now),

new.html中的设置:

{{=form.custom.begin}}
{{=TR(T(‘Registered’) + ‘:’, form.custom.widget.registered)}}
{{=TR(”, form.custom.submit)}}
{{=form.custom.end}}

在生成的表单中,默认值为:
2011-07-21 23:29:22
单击输入框会弹出一个日历,选择后会变成:
2011年7月21日 23时29分22秒

这是提交表达会出现验证错误(validation error),只有手工改回:
2011-07-21 23:29:22
才能提交成功。

解决办法:

原则上这应该是web2py的一个Bug,validation功能的本地化做得不完善。
可以通过修改Languages文件绕过这个Bug,也就是在zh-cn.py中,把
%Y-%m-%d
对应的值由
%Y年%m月%d日
改为%Y-%m-%d,
并把
%Y-%m-%d %H:%M:%S
对应的值由
%Y年%m月%d日 %H时%M分%S秒
改为
%Y-%m-%d %H:%M:%S。

这样在使用datepicker(日历)时,生成的日期时间总是
2011-07-21 23:29:22
这样的格式,也就不会再出现验证错误了。

在Ubuntu下运行多个Firefox

我个人的需求是:两个Firefox,一个办公用,一个开发用。
在Ubuntu 11.04 + Firefox 5下测试成功。

$ firefox --help
Firefox options
-P <profile>       Start with <profile>.
-no-remote         Open new instance, not a new window in running instance.

$ firefox -no-remote -P
创建名为Developer的配置文件
安装Firebug和Web Developer Tools扩展

创建启动器:
类型:应用程序
名称:Firefox for Developer
命令:firefox -no-remote -P Developer
注释:With dedicated Developer profile.
图标:可以从Google图片搜索中选取。

参考资料:
如何同时运行两个配置,扩展完全不一样的 Firefox
    Google关键字:同时运行两个Firefox Ubuntu
    http://forum.ubuntu.org.cn/viewtopic.php?f=73&t=244201
使用GIMP使图片背景透明化
    Google关键字:gimp 图片 透明
    http://blog.csdn.net/sabalol/article/details/5711102