Python实现QQ界面

阅读更多

                     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):好友列表

Python实现QQ界面_第1张图片

(2):群组

Python实现QQ界面_第2张图片

(3):联系人

Python实现QQ界面_第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

  • Python实现QQ界面_第4张图片
  • 大小: 33.1 KB
  • Python实现QQ界面_第5张图片
  • 大小: 32.2 KB
  • Python实现QQ界面_第6张图片
  • 大小: 31.3 KB
  • 查看图片附件

你可能感兴趣的:(python,qq,linux,gtk,treeview)