# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'gui/guiMain.ui' # # Created: Mon Feb 23 17:19:12 2015 # by: PyQt4 UI code generator 4.11.3 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui import json,os try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: def _fromUtf8(s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig) class Ui_Main(object): def setupFont(self): self.font1 = QtGui.QFont() self.font1.setFamily(_fromUtf8("Helvetica")) self.font1.setPointSize(14) self.font1.setBold(True) self.font1.setWeight(75) self.font2 = QtGui.QFont() self.font2.setFamily(_fromUtf8("Helvetica")) self.font2.setPointSize(13) self.font2.setBold(False) self.font2.setWeight(50) self.font3 = QtGui.QFont() self.font3.setFamily(_fromUtf8("Helvetica")) self.font3.setPointSize(9) def setupUi(self, Main): self.main=Main # font self.setupFont() # head Main.setWindowTitle(_translate("Main", "PyLinuxQQ", None)) Main.resize(268, 513) self.img_head = QtGui.QGraphicsView(Main) self.img_head.setGeometry(QtCore.QRect(10, 10, 71, 61)) self.lbl_head = QtGui.QLabel(Main) self.lbl_head.setGeometry(QtCore.QRect(90, 17, 131, 21)) self.lbl_head.setFont(self.font1) self.lbl_content = QtGui.QLabel(Main) self.lbl_content.setGeometry(QtCore.QRect(90, 50, 151, 18)) self.text_search = QtGui.QLineEdit(Main) self.text_search.setGeometry(QtCore.QRect(0, 80, 268, 28)) self.text_search.setPlaceholderText( _translate("Main", "搜索好友...", None)) # tabwidget self.tabWidget = QtGui.QTabWidget(Main) self.tabWidget.setGeometry(QtCore.QRect(0, 110, 268, 401)) self.tabWidget.setTabShape(QtGui.QTabWidget.Rounded) # 会话 self.tab = QtGui.QWidget() self.listWidget_recent = QtGui.QListWidget(self.tab) self.listWidget_recent.setGeometry(QtCore.QRect(0, 11, 261, 351)) self.tabWidget.addTab(self.tab, _fromUtf8(" 会 话 ")) self.graphicsView_recent={} QtCore.QObject.connect(self.listWidget_recent, QtCore.SIGNAL(_fromUtf8("itemDoubleClicked(QListWidgetItem*)")), self.itemOnDoubleClickedRecent) # 好友 self.tab_2 = QtGui.QWidget() self.scrollArea = QtGui.QScrollArea(self.tab_2) self.scrollArea.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.scrollArea.setGeometry(QtCore.QRect(0, 7, 261, 361)) self.scrollArea.setWidgetResizable(False) self.toolBox = QtGui.QToolBox() self.scrollArea.setWidget(self.toolBox) self.toolBox.setGeometry(QtCore.QRect(0, 7, 250, 600)) self.toolBox.setCurrentIndex(0) self.tabWidget.addTab(self.tab_2, _fromUtf8(" 好 友 ")) # 群组 self.tab_3 = QtGui.QWidget() self.scrollArea = QtGui.QScrollArea(self.tab_3) self.scrollArea.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.scrollArea.setGeometry(QtCore.QRect(0, 7, 261, 361)) self.scrollArea.setWidgetResizable(False) self.toolBox_group = QtGui.QToolBox() self.scrollArea.setWidget(self.toolBox_group) self.toolBox_group.setGeometry(QtCore.QRect(0, 7, 250, 400)) self.tabWidget.addTab(self.tab_3, _fromUtf8(" 群 组 ")) self.tabWidget.setCurrentIndex(1) self.toolBox_group.currentChanged.connect(self.onToolBoxChanged_group) #discuss self.listWidget_discuss = QtGui.QListWidget() self.toolBox_group.addItem(self.listWidget_discuss, _fromUtf8('讨论组')) self.listWidget_discuss.setGeometry(QtCore.QRect(0, 1, 238, 301)) QtCore.QObject.connect(self.listWidget_discuss, QtCore.SIGNAL(_fromUtf8("itemDoubleClicked(QListWidgetItem*)")), self.itemOnDoubleClickedDiscuss) #group self.listWidget_group = QtGui.QListWidget() self.toolBox_group.addItem(self.listWidget_group, _fromUtf8('群 组')) self.toolBox_group.setCurrentIndex(1) self.listWidget_group.setGeometry(QtCore.QRect(0, 1, 238, 301)) self.toolsize_group=[0,0] self.graphicsView_group = {} QtCore.QObject.connect(self.listWidget_group, QtCore.SIGNAL(_fromUtf8("itemDoubleClicked(QListWidgetItem*)")), self.itemOnDoubleClickedGroup) QtCore.QMetaObject.connectSlotsByName(Main) def setupSelf(self,main,account,lnick): pixmap = QtGui.QPixmap() pixmap.load('tmp/head/' + str(account) + '.jpg') scene = QtGui.QGraphicsScene(main) item = QtGui.QGraphicsPixmapItem(pixmap) scene.addItem(item) self.img_head.setScene(scene) self.lbl_head.setText(_translate("Main", str(account), None)) self.lbl_content.setText(_translate("Main", lnick, None)) def setupFace(self, main,data): for i in range(len(data['friends'])): name = str(data['friends'][i]['uin']) pixmap = QtGui.QPixmap() if not os.path.exists('tmp/head/'+name+'.jpg'): name = 'qq' pixmap.load('tmp/head/' + name + '.jpg') scene = QtGui.QGraphicsScene(main) item = QtGui.QGraphicsPixmapItem(pixmap) scene.addItem(item) self.graphicsView[data['friends'][i]['uin']].setScene(scene) self.graphicsView[data['friends'][i]['uin']].resize(50,50) def setupFace_recent(self,main,data): print 'load recent' if data is not None: for i in range(len(data)-1): if data[i]['type']==0: self.graphicsView_recent[data[i]['uin']].setScene(self.createImg('user',data[i]['uin'])) def itemOnDoubleClickedRecent(self,item): print 'double itemDoubleClicked Recent' print item.listWidget().itemWidget(item) widget=item.listWidget().itemWidget(item) uin_type=widget.property('uin').toString().split(':') print uin_type uin=int(uin_type[0]) flag=int(uin_type[1]) chat=self.main.chat.ui chat.createMsg(self,uin,None,flag) chat.stackedWidget.setCurrentWidget(chat.stack[uin]) self.main.chat.showNormal() def itemOnDoubleClickedGroup(self,item): print 'double itemDoubleClicked Group' print item.listWidget().itemWidget(item) widget=item.listWidget().itemWidget(item) uin=int(widget.property('uin').toString()) print uin chat=self.main.chat.ui chat.createMsg(self,uin,None,1) chat.stackedWidget.setCurrentWidget(chat.stack[uin]) self.main.chat.showNormal() def itemOnDoubleClickedDiscuss(self,item): print 'double itemDoubleClicked discuss' print item.listWidget().itemWidget(item) widget=item.listWidget().itemWidget(item) uin=int(widget.property('uin').toString()) print uin chat=self.main.chat.ui chat.createMsg(self,uin,None,2) chat.stackedWidget.setCurrentWidget(chat.stack[uin]) self.main.chat.showNormal() def itemOnDoubleClicked(self,item): print 'double itemDoubleClicked' print item.listWidget().itemWidget(item) widget=item.listWidget().itemWidget(item) uin=int(widget.property('uin').toString()) print uin chat=self.main.chat.ui chat.createMsg(self,uin,None,0) chat.stackedWidget.setCurrentWidget(chat.stack[uin]) self.main.chat.showNormal() def createImg(self,flag,uin): pixmap = QtGui.QPixmap() if flag=='discuss': url='tmp/sys/discuss.png' elif flag=='group': url='tmp/sys/group.jpg' else: url='tmp/head/'+str(uin)+'.jpg' if not os.path.exists(url): url='tmp/head/qq.jpg' pixmap.load(url) scene = QtGui.QGraphicsScene() item = QtGui.QGraphicsPixmapItem(pixmap) scene.addItem(item) return scene def setupRecent(self,data): print 'load recent' for i in range(len(data)-1): item,widget=self.createWidget_recent(self.listWidget_recent,data[i]['uin'],data[i]['type']) self.listWidget_recent.setItemWidget(item, widget) def setupGroup(self,data): print 'group' self.groupdict={} for g in data['gnamelist']: info={'name':g['name'],'gid':g['gid'],'code':g['code']} self.groupdict[g['gid']]=info item,widget=self.createWidget_group(self.listWidget_group,g['name'],g['gid'],'group') self.listWidget_group.setItemWidget(item, widget) self.toolsize_group[1]=len(data['gnamelist']) self.toolBox_group.resize(QtCore.QSize(250,self.toolsize_group[1]*48+len(self.toolsize_group)*34)) def onToolBoxChanged_group(self,index): self.toolBox_group.resize(QtCore.QSize(250,self.toolsize_group[index]*48+len(self.toolsize_group)*34)) def onToolBoxChanged(self,index): self.toolBox.resize(QtCore.QSize(250,self.toolsize[index]*48+len(self.toolsize)*34)) def setupDiscuss(self,data): print 'discuss' self.discussdict={} for g in data['dnamelist']: info={'name':g['name'],'did':g['did']} self.discussdict[g['did']]=info item,widget=self.createWidget_group(self.listWidget_discuss,g['name'],g['did'],'discuss') self.listWidget_discuss.setItemWidget(item, widget) self.toolsize_group[0]=len(data['dnamelist']) def setupFriend(self, data,online): print 'type',type(data['friends'][0]['uin']) # categories if data['categories'][0]['index'] == 0: self.listWidget = {} else: self.listWidget = {0: QtGui.QListWidget()} self.toolBox.addItem(self.listWidget[0], _fromUtf8('我的好友')) self.listWidget[0].setGeometry(QtCore.QRect(0, 1, 238, 301)) QtCore.QObject.connect(self.listWidget[0], QtCore.SIGNAL(_fromUtf8("itemDoubleClicked(QListWidgetItem*)")), self.itemOnDoubleClicked) #QtCore.QObject.connect(self.listWidget, QtCore.SIGNAL(_fromUtf8("itemDoubleClicked(QListWidgetItem*)")), self.listWidget.scrollToBottom) for cat in data['categories']: self.listWidget[cat['index']] = QtGui.QListWidget() self.toolBox.addItem( self.listWidget[cat['index']], _fromUtf8(cat['name'])) self.listWidget[cat['index']].setGeometry( QtCore.QRect(0, 1, 238, 301)) QtCore.QObject.connect(self.listWidget[cat['index']], QtCore.SIGNAL(_fromUtf8("itemDoubleClicked(QListWidgetItem*)")), self.itemOnDoubleClicked) self.graphicsView = {} # userlist self.userdict={} for i in range(len(data['friends'])): info={'markname':'None','nickname':data['info'][i]['nick'],'online':False,'cat':data['friends'][i]['categories']} print info self.userdict[data['friends'][i]['uin']]=info # markname for mark in data['marknames']: self.userdict[mark['uin']]['markname']=mark['markname'] # online cat_count={} for on in online: self.userdict.get(on['uin'])['online']=True arg1=self.listWidget[self.userdict[on['uin']].get('cat')] arg2=self.userdict[on['uin']].get('nickname') arg3=self.userdict[on['uin']].get('markname') arg4=on['uin'] self.item, self.widget = self.createWidget(arg1,arg2,arg3,arg4) arg1.setItemWidget( self.item, self.widget) #count if cat_count.get(self.userdict[on['uin']].get('cat')): print True cat_count[self.userdict[on['uin']].get('cat')]+=1 else: cat_count[self.userdict[on['uin']].get('cat')]=1 print 'cat:',self.userdict[on['uin']].get('cat'),'value:',cat_count[self.userdict[on['uin']].get('cat')] # widget for user in data['friends']: if self.userdict[user['uin']].get('online')==True: continue arg1=self.listWidget[self.userdict[user['uin']].get('cat')] arg2=self.userdict[user['uin']].get('nickname') arg3=self.userdict[user['uin']].get('markname') arg4=user['uin'] self.item, self.widget = self.createWidget(arg1,arg2,arg3,arg4) arg1.setItemWidget( self.item, self.widget) # size self.toolsize = [] j=-1 for key,val in self.listWidget.items(): j+=1 size = len(val) print size self.toolsize.append(size) self.toolBox.setItemText(j,self.toolBox.itemText(j)+'('+str(cat_count.get(key,0))+'/'+str(size)+')') self.toolBox.setCurrentIndex(j) self.toolBox.currentChanged.connect(self.onToolBoxChanged) self.toolBox.resize(QtCore.QSize(250,self.toolsize[0]*48+len(self.toolsize)*34)) def onToolBoxChanged(self,index): self.toolBox.resize(QtCore.QSize(250,self.toolsize[index]*48+len(self.toolsize)*34)) def createWidget_recent(self,listWidget,uin,flag): self.listWidgetItem = QtGui.QListWidgetItem(listWidget) self.listWidgetItem.setSizeHint(QtCore.QSize(0, 48)) self.widget = QtGui.QWidget() self.widget.setProperty('uin',str(uin)+':'+str(flag)) self.widget.setGeometry(QtCore.QRect(0, 0, 238, 51)) self.graphicsView_recent[uin] = QtGui.QGraphicsView(self.widget) self.graphicsView_recent[uin].setGeometry(QtCore.QRect(1, 1, 60, 60)) if flag==0: self.graphicsView_recent[uin].setScene(self.createImg('user',uin)) title=self.userdict[uin]['nickname'] if flag==1: title=self.groupdict[uin]['name'] self.graphicsView_recent[uin].setScene(self.createImg('group',uin)) if flag==2: title=self.discussdict[uin]['name'] self.graphicsView_recent[uin].setScene(self.createImg('discuss',uin)) self.graphicsView_recent[uin].resize(50,50) self.lbl_title = QtGui.QLabel(self.widget) self.lbl_title.setGeometry(QtCore.QRect(60, 10, 181, 18)) self.lbl_title.setFont(self.font2) self.lbl_title.setText(_translate("Main", title, None)) return self.listWidgetItem, self.widget def createWidget_group(self,listWidget,title,guin,flag): self.listWidgetItem = QtGui.QListWidgetItem(listWidget) self.listWidgetItem.setSizeHint(QtCore.QSize(0, 48)) self.widget = QtGui.QWidget() self.widget.setProperty('uin',guin) self.widget.setGeometry(QtCore.QRect(0, 0, 238, 51)) self.graphicsView_group[guin] = QtGui.QGraphicsView(self.widget) self.graphicsView_group[guin].setGeometry(QtCore.QRect(1, 1, 60, 60)) self.graphicsView_group[guin].setScene(self.createImg(flag,guin)) self.graphicsView_group[guin].resize(50,50) self.lbl_title = QtGui.QLabel(self.widget) self.lbl_title.setGeometry(QtCore.QRect(60, 10, 181, 18)) self.lbl_title.setFont(self.font2) self.lbl_title.setText(_translate("Main", title, None)) return self.listWidgetItem, self.widget def createWidget(self,listWidget, title,markname,uin): self.listWidgetItem = QtGui.QListWidgetItem(listWidget) self.listWidgetItem.setSizeHint(QtCore.QSize(0, 48)) self.widget = QtGui.QWidget() self.widget.setProperty('uin',uin) self.widget.setGeometry(QtCore.QRect(0, 0, 238, 51)) self.graphicsView[uin] = QtGui.QGraphicsView(self.widget) self.graphicsView[uin].setGeometry(QtCore.QRect(1, 1, 38, 38)) self.lbl_title = QtGui.QLabel(self.widget) self.lbl_title.setGeometry(QtCore.QRect(60, 10, 181, 18)) self.lbl_title.setFont(self.font2) if markname != 'None': title=markname+'('+title+')' self.lbl_title.setText(_translate("Main", title, None)) self.lbl_comment = QtGui.QLabel(self.widget) self.lbl_comment.setGeometry(QtCore.QRect(60, 30, 181, 18)) info=self.userdict.get(uin) if info['online']: self.lbl_comment.setText(_translate("Main", '[在线]', None)) else: self.lbl_comment.setText(_translate("Main", '[离线]', None)) self.lbl_comment.setFont(self.font3) return self.listWidgetItem, self.widget def openChat(self,main,opened,qqchat,msg,flag=0): ''' content: [["font", {size: 10, color: "000000", style: [0, 0, 0], name: "宋体"}], "你好啊,", ["face", 3], "嘿嘿 "] 0: ["font", {size: 10, color: "000000", style: [0, 0, 0], name: "宋体"}] 1: "你好啊," 2: ["face", 3] 3: "嘿嘿 " from_uin: 603579481 msg_id: 54156 msg_id2: 138519 msg_type: 9 reply_ip: 176488600 time: 1424938754 to_uin: 28762822 content: [["font", {size: 10, color: "000000", style: [0, 0, 0], name: "宋体"}], "噗 "] from_uin: 4232023453 gid group_code: 2179707954 code info_seq: 16664955 msg_id: 27420 msg_id2: 574968 msg_type: 43 reply_ip: 176884850 send_uin: 211668676 user seq: 485 time: 1425198894 to_uin: 28762822 ''' # flag 0qq, 1group, 2discuss ''' if opened==False: opened==True qqchat.show() ''' chat_from_uin=msg['from_uin'] chat_msg='' for i in range(1,len(msg['content'])): if type(msg['content'][i]) is list: chat_msg+='<img src="tmp/face/'+str(msg['content'][i][1])+'.gif" />' main.loadFace(msg['content'][i][1]) print 'loadface:',msg['content'][i][1] else: chat_msg+=msg['content'][i] print chat_from_uin,':',chat_msg if flag==1 or flag==2: qqchat.ui.createMsg(self,chat_from_uin,chat_msg,flag,msg['send_uin']) else: qqchat.ui.createMsg(self,chat_from_uin,chat_msg)