设为首页 收藏本站
查看: 2745|回复: 1

[经验分享] Python实现QQ界面

  [复制链接]

尚未签到

发表于 2017-4-25 08:33:44 | 显示全部楼层 |阅读模式

                     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):好友列表
DSC0000.png
(2):群组
DSC0001.png
(3):联系人
DSC0002.png

部分代码:
#!/usr/bin/python
#-*- coding:utf-8 -*-
###############################################################
##Filename qqchat.py
#
#Copyrigth (c) 2014.6.12
#AuthorTangMeiHao@760209035@qq.com
#
#Descriptionpython+gtk实现qq聊天
################################################################
from friendlist import *
from grouplistimport *
#导入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
#AuthorTangMeiHao@760209035@qq.com
#
#Descriptionpython+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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-368844-1-1.html 上篇帖子: [转] Python运算符重载 下篇帖子: python中的生成器
累计签到:1 天
连续签到:1 天
发表于 2017-5-19 16:05:07 | 显示全部楼层
发个完整版的呗

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表