- 12
- Dec
准备在Ubuntu Tweak中实现一个功能,即崩溃提示功能。出现问题不能正常运行,也得弹出个窗口嘛。
看了些文章,实际上实现这个也不难,对主函数进行try....catch...,然后把出错信息给弹出来就可以了。
这里要应用到trackback和StringIO了。
import StringIO
import traceback
if __name__ == "__main__":
try:
gobject.threads_init()
launcher = TweakLauncher()
launcher.main()
except:
output = StringIO.StringIO()
exc = traceback.print_exc(file = output)
worker = GuiWorker('traceback.glade')
dialog = worker.get_widget('FatalErrorDialog')
textview = worker.get_widget('message_view')
buffer = textview.get_buffer()
buffer.set_text(output.getvalue())
dialog.run()
dialog.destroy()
output.close()
上面的代码取自Ubuntu Tweak的开发分支。
实际上很简单,利用traceback将错误信息保存至文件的功能,再利用StringIO建立一个StringIO,把traceback信息存到这个“文件”当中,然后弹出的对话框中就可以用这个了。
效果如图:
100% Python的Trackback信息,用户只要把这个信息粘贴、报道就OK了。虽然从终端也可以获得,但明显GUI的形式更好,因为还可以点击“是”把内容直接提交呢!
补充一下有关StringIO的信息:另外还有一个cStringIO,是用C实现的,速度更快。可惜,不支持Unicode。

弱国tualatrix可以完善一下ubuntu-tweak for fedora就好了...
就是差那个源编辑的功能....或许这是yum和apt的差别吧...
或者把整个项目转变为gnome-tweak..........
只是建议,或者是妄想....
不支持楼上的,先把ubuntu-tweak做好了再考虑gnome-tweak吧
听说C实现的模块能快1000倍~~跑起来差别大么?