glade+pygtk学习 (2)

按照计划,今天参照这篇文章 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了。

#get http headers, then insert into tree model
data = page.read()
headers = page.info()
for name in headers.keys():
insert_row(self.treemodel, None, name, headers[name])

3. 把页面内容转换成unicode字符。用到了re模块去取页面meta标记里的字符集设置。

import re, string

r = re.compile(r""".*content=['|"]?text/html;\s?charset=([a-zA-Z0-9\-]+)['|"]?.*""", re.S | re.I | re.M)
m = r.match(data)
if m:
charset = string.lower(m.group(1))
if charset != 'utf-8':
data = data.decode(charset, 'ignore').encode('utf-8', 'ignore')
else:
data = data.encode('utf-8', 'ignore')
self.logwindow.set_text(data)

4. 用TexBuffer的set_text方法替代了insert_at_cursor。

新ServerInfo程序的源代码: pygtk-learning-serverinfo.tgz

glade+pygtk学习

今天上午参照 A Beginner's Guide to Using pyGTK and Glade 这篇文章学习,感觉确实很好用。文章开始部分对比几种GUI开发库写得挺好,虽然是2003年写的。还有后面提到如何结合socket编程,正好要用到。

照着Demo实做了一遍,发现一些用法已经deprecated了:

  • gtk.TRUE - 用True就行了
  • gtk.mainquit - 换成gtk.main_quit
  • gtk.mainloop() - 换成gtk.main()

期间犯了个小错误,忘了在glade里为主窗口添加destroy信号,结果没法关闭窗口后没法退出程序。

显示含有中文的页面内容时会在下面这行代码报错,像是编码问题,先不深究了。

self.logwindow.insert_at_cursor(data, len(data))

自己用为Entry控件加了activate信号,响应回车事件。也准备试试如何显示对话框,还没有完成。

可以在这里下载Demo的源代码: http://guoyong.org/?dl=pygtk-demo.tgz

接下来计划按照这篇文章 [ http://www.learningpython.com/2006/05/30/building-an-application-with-pygtk-and-glade/ ]学习,然后准备自己动手写了。

Softwares installed on my 6600

Below is a list of softwares install on my Nokia 6600 phone.

PyS60 - http://wiki.opensource.nokia.com/projects/PyS60
OggPlay - http://sourceforge.net/project/showfiles.php?group_id=86146
掌上书院 - http://www.mbook.com.cn/upload/soft.jsp
QReader - http://www.qreader.com/
Forward - http://www.compsoc.man.ac.uk/~ashley/
Torch - http://www.compsoc.man.ac.uk/~ashley/
AutoLock - http://fuse.stc.cx/autolock/
Big Clock - http://newlc.com/Big-Clock-Series-60.html
Planet Finder - http://www.newlc.com/article.php3?id_article=799
Egg Clock - http://gallery.mobile9.com/f/22812/
PhoneInfo - http://my-symbian.com/s60/software/applications.php?fldAuto=216&faq=2
Switcher - http://gallery.mobile9.com/f/13839/
Best vCard - http://gallery.mobile9.com/f/29125/
PuTTY - http://sourceforge.net/project/showfiles.php?group_id=97245
S60Zip - http://fuse.stc.cx/s60zip/
Best Screen Snap - http://gallery.mobile9.com/f/28313/
TodayView - http://gallery.mobile9.com/f/28334/
NiceDial - http://gallery.mobile9.com/f/29603/
AgileMessenger - http://www.agilemobile.com/downloads.html
Y-Browser - http://www.pushl.com/y_browser/
SysExplorer - http://newlc.com/SysExplorer-the-universal-file.html
FExplorer - http://www.gosymbian.com/FE_download.html
XXL ScreenSaver - http://www.gosymbian.com/XXLSS_download.html
Opera - http://www.opera.com/products/mobile/products/
Also please visit my bookmarks on del.icio.us.