今天看了limodou在CU的帖子才知道Google的这个服务 google.com/coop/
limodou创建的是python.cn
google.com/coop/cse?cx=009376466705745340527%3Acpx…
我也创建了一个:Mobile Python,希望搜索Python在移动设备上的开发与应用。
google.com/coop/cse?cx=001459140553769941820%3Alss…
今天看了limodou在CU的帖子才知道Google的这个服务 google.com/coop/
limodou创建的是python.cn
google.com/coop/cse?cx=009376466705745340527%3Acpx…
我也创建了一个:Mobile Python,希望搜索Python在移动设备上的开发与应用。
google.com/coop/cse?cx=001459140553769941820%3Alss…
这几天用pygtk和glade写了一个不大的应用,在ubuntu下开发,然后移植到Maemo平台。
学习的过程中发现了SimpleGladeApp.py这个module,可以更方便地以面向对象的方式使用libgrade。
还记得serverinfo这个例子吗?里面是这样得到一个widget的实例的:
用了SimpleGladeApp.py,直接用self.logwindowview就行了。
下面是改造serverinfo使用SimpleGladeApp.py的步骤:
1. 从 www.gnomefiles.org/app.php/SimpleGladeApp.py 下载SimpleGladeApp.py
2. 解压缩后把tepache这个脚本放到你的PATH环境变量指定的路径下,比如/usr/local/bin,然后加上执行权限。
3. 我们已经有现成的serverinfo.glade文件了,现在要做的是用tepache这个脚本解析glade文件来生成一个Python模块,里面是一些对应window或dialog等顶层widget的class,并实现他们的callback方法。命令如下(-o选项是为了不覆盖原来的serverinfo.py):
可以看到tepache生成了三个文件:serverinfo_new.py, serverinfo_new.py.orig, SimpleGladeApp.py
.orig文件很重要,tepache用这个文件保护你在serverinfo_new.py添加的代码,所以不要删除这个文件。
可以先运行serverinfo_new.py看看效果。
4. serverinfo_new.py的部分代码:
5. 现在就可以添加一些代码来实现serverinfo的功能了。注意不要修改形如#– Demodialog custom methods { 这样的注释,否则如果界面(glade文件)有了改动,tepache就没法做patch了。
把原来的insert_row改成ServerInfo类的一个方法,放在#– Serverinfo custom methods 注释之间。
goUrl方法也放在这里。 注意访问widget实例的方法已经由
变成
main方法里的实例化Demodialog的语句要挪到button2的clicked事件响应方法里,不然程序一运行对话框就出现了,你刚才一定注意到了。
destroy响应方法里加入self.gtk_main_quit()以便窗口销毁时能够退出程序。
6. 现在运行serverinfo_new.py,原来serverinfo.py的功能基本上都有了。但有一个问题,对话框弹出后点击“确定”或“取消”按钮都不能关闭对话框。我的解决办法是不在glade设计这个对话框,完成在程序里用代码实现。
7. 注意每次重新设计了界面,修改了glade文件,都要运行tepache来patch生成的python模块,已做的修改不会被覆盖。
新的代码下载地址: guoyong.org/?dl=pygtk-learning-serverinfo-simplegl…
按照计划,今天参照这篇文章 Building an Application with PyGTK and Glade 学习。第一次使用menu和toolbar,进一步学习了tree/list view的使用,昨天还不太会用的dialog也学会了。
下载源代码: pygtk-learning-pywine.tgz
昨天遗留的几个问题也解决了:
1. 首先完成了那个dialog。虽然没什么功能,就算是复习一下dialog的实现方法吧。
2. 把ServerInfo程序的treeview内容改成显示http的header了。
3. 把页面内容转换成unicode字符。用到了re模块去取页面meta标记里的字符集设置。
4. 用TexBuffer的set_text方法替代了insert_at_cursor。
新ServerInfo程序的源代码: pygtk-learning-serverinfo.tgz
今天上午参照 A Beginner’s Guide to Using pyGTK and Glade 这篇文章学习,感觉确实很好用。文章开始部分对比几种GUI开发库写得挺好,虽然是2003年写的。还有后面提到如何结合socket编程,正好要用到。
照着Demo实做了一遍,发现一些用法已经deprecated了:
期间犯了个小错误,忘了在glade里为主窗口添加destroy信号,结果没法关闭窗口后没法退出程序。
显示含有中文的页面内容时会在下面这行代码报错,像是编码问题,先不深究了。
自己用为Entry控件加了activate信号,响应回车事件。也准备试试如何显示对话框,还没有完成。
可以在这里下载Demo的源代码: guoyong.org/?dl=pygtk-demo.tgz
接下来计划按照这篇文章 [ www.learningpython.com/2006/05/30/building-an-appl... ]学习,然后准备自己动手写了。
今天设置自己的guoyong.org“>Planet站点,用CU的feed做试验,发现会乱码,原因是CU的feed是GB2312编码的。
google到一些资料,但好像并不能完全解决问题:
小林的blog,按照这个方法做没成功。
Web4C,我写完脚本才注意到这个搜索结果,但没找到planet源码里的planetlib.py文件。
我想到的土方法,写一个cgi脚本做proxy,取回feed后做转换编码方式再输出。
转码是这样完成的: str.decode('GBK').encode('UTF-8')
Latest Comments
RSS