Python实现QQ界面(好友列表,通信部分还未做好,没时间~~嘻嘻)
项目环境:
(1)OS:Linux RedHat6.3
(2)Language:Python
(3)Lib:pygtk,gtk
(4)Support tools:Galde3
项目简述:
(1)实现基本界面
(2)使用gtk treeview double click事件,点击好友触发事件(这是个难点,资料很少推荐大家这个博客http://blog.chinaunix.net/uid-25793640-id-3047846.html)
(3)点击好友列表,弹出对话框
(4)使用Python网络编程,实现通信
项目测试:
(1):好友列表
(2):群组
(3):联系人
部分代码:
#!/usr/bin/python #-*- coding:utf-8 -*- ############################################################### ##Filename qqchat.py # #Copyrigth (c) 2014.6.12 #Author TangMeiHao@[email protected] # #Description python+gtk实现qq聊天 ################################################################ from friendlist import * from grouplist import * #导入gtk模块 try: import gtk except: pass #导入gtk.glade模块 try: import gtk.glade except: pass #创建类 class qq: #初始化galde对象 def __init__(self): #定义所要载入的glade文件 self.glade_file = "qq.glade" #gtkbuilder必须使用自己的初始化方式,而不能使用libglade self.glade=gtk.Builder() #设置glade文件 self.glade.add_from_file(self.glade_file) #链接glade文件signals self.glade.connect_signals(self) #设置glade文件属性 self.glade.get_object("window1").set_size_request(300,800) #self.glade.get_object("window1").set_position(gtk.WIN_POS_CENTER) self.glade.get_object("window1").show_all() #读取widget信号 for widget in self.glade.get_objects(): # issubclass() 布尔函数判断一个类是另一个类的子类或子孙类,http://blog.csdn.net/bolike/article/details/21658895 if issubclass(type(widget),gtk.Buildable):name=gtk.Buildable.get_name(widget) setattr(self,name,widget) #设置界面相关的文本条目 self.entry1.set_max_length(5) self.entry1.set_text("唐美好") text1=self.entry1.get_text() self.entry1.set_text(text1) self.entry2.set_max_length(30) self.entry2.set_text("理想很丰满,现实很骨干") #创建一个好友树形实例 self.stInstance=friendlist(self.treestore1,self.treeview1) #创建群组列表实例 self.groupInstance=grouplist(self.treeview2,self.treestore2) if __name__ == '__main__': try: ui = qq() gtk.main() except KeyboardInterrupt: pass
#!/usr/bin/python #-*- coding:utf-8 -*- ############################################################### ##Filename friendlist.py # #Copyrigth (c) 2014.6.12 #Author TangMeiHao@[email protected] # #Description python+gtk实现qq聊天 ################################################################ import sys import os try: import pygtk pygtk.require('2.0') except: pass try: import gtk except: print "GTK Not avaliable!" sys.exit(1) class friendlist: """为了删除特定的行,在添加时就记下当时的跌代器 省的以后麻烦! """ def __init__(self,treestore,treeview): """在qqchat里面实例话好友列表时,将galde文件 里面的treeview,treestore传给上面所对应的参数 """ self.ts=treestore self.tv=treeview #创建基本的treeviewcolumn self.tvcolumn=gtk.TreeViewColumn('') self.tv.append_column(self.tvcolumn) self.cell=gtk.CellRendererText() self.tvcolumn.pack_start(self.cell,True) self.tvcolumn.add_attribute(self.cell,'text',0) it=self.ts.append(None,["我的好友"]) self.ts.append(it,["唐美好"]) self.ts.append(it,["唐棉花"]) it=self.ts.append(None,["家人"]) self.ts.append(it,["高圆圆"]) it=self.ts.append(None,["同学"]) self.ts.append(it,["刘德华"]) #增加Server时的行为 def addServer(self,text1,text2): pass #增加ServerGroup时的行为 def addServerGroup(self,text2): pass #增加删除server的行为 def delServer(self,text): pass #此部分暂时没写好了 def delServerGroup(self,text): pass