Python PyQt4实现QQ抽屉效果

yipeiwu_com6年前Python基础

本文实例为大家分享了Python PyQt4实现QQ抽屉效果展示的具体代码,供大家参考,具体内容如下

先看截图效果:

主要是使用了QT的QTabWidget、QToolBox多页窗口部件

# -*- coding: utf-8 -*- 
from PyQt4.QtGui import * 
from PyQt4.QtCore import * 
import sys 
 
QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8")) 
 
class MyQQ(QTabWidget): 
  def __init__(self,parent=None): 
    super(MyQQ,self).__init__(parent) 
     
    toolButton1=QToolButton() 
    toolButton1.setText(self.tr("gavin")) 
    toolButton1.setIcon(QIcon("d:/image/1.png")) 
    toolButton1.setIconSize(QSize(60,60)) 
    toolButton1.setAutoRaise(True) 
    toolButton1.setToolButtonStyle(Qt.ToolButtonTextBesideIcon) 
 
 
    toolButton2=QToolButton() 
    toolButton2.setText(self.tr("问题的方法")) 
    toolButton2.setIcon(QIcon("d:/image/2.png")) 
    toolButton2.setIconSize(QSize(60,60)) 
    toolButton2.setAutoRaise(True) 
    toolButton2.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)     
 
    toolButton3=QToolButton() 
    toolButton3.setText(self.tr("为什么")) 
    toolButton3.setIcon(QIcon("d:/image/3.png")) 
    toolButton3.setIconSize(QSize(60,60)) 
    toolButton3.setAutoRaise(True) 
    toolButton3.setToolButtonStyle(Qt.ToolButtonTextBesideIcon) 
 
    groupbox1=QGroupBox() 
    vlayout1=QVBoxLayout(groupbox1) 
    vlayout1.setMargin(10) 
    vlayout1.setAlignment(Qt.AlignCenter) 
    vlayout1.addWidget(toolButton1) 
    vlayout1.addWidget(toolButton2) 
    vlayout1.addStretch() 
 
    groupbox2=QGroupBox() 
    vlayout2=QVBoxLayout(groupbox2) 
    vlayout2.setMargin(10) 
    vlayout2.setAlignment(Qt.AlignCenter) 
    vlayout2.addWidget(toolButton3) 
    vlayout2.addStretch() 
 
    groupbox3=QGroupBox() 
 
    toolbox1 = QToolBox() 
    toolbox1.addItem(groupbox1,self.tr("我的好友")) 
    toolbox1.addItem(groupbox2,self.tr("同事")) 
    toolbox1.addItem(groupbox3,self.tr("黑名单")) 
         
    toolbox2 = QToolBox() 
     
    self.addTab(toolbox1, "联系人") 
    self.addTab(toolbox2, "群/讨论组") 
     
app=QApplication(sys.argv) 
myqq=MyQQ() 
myqq.setWindowTitle("QQ2012") 
myqq.show() 
app.exec_() 

问题记录

1.脚本中使用中文处,提示错误:

SyntaxError:<unicode error> 'utf8' codec can't decode byte 0xc4 in position 0: invalid continuation byte

需要将*.py文件保存成utf-8, 我用的是gvim,一直没搞明白vim的编码设置,所以我用了种比较笨的方法,用记事本打开,另存为utf-8格式

2.一开始,我把头像目录image放在\Python32\Lib\site-packages目录下,然后在解释中调用模块,但是不能显示,后来就改用了绝对路径

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Python 中如何实现参数化测试的方法示例

之前,我曾转过一个单元测试框架系列的文章,里面介绍了 unittest、nose/nose2 与 pytest 这三个最受人欢迎的 Python 测试框架。 本文想针对测试中一种很常见的...

对pandas中Series的map函数详解

Series的map方法可以接受一个函数或含有映射关系的字典型对象。 使用map是一种实现元素级转换以及其他数据清理工作的便捷方式。 (DataFrame中对应的是applymap()函...

利用Python如何实现数据驱动的接口自动化测试

利用Python如何实现数据驱动的接口自动化测试

前言 大家在接口测试的过程中,很多时候会用到对CSV的读取操作,本文主要说明Python3对CSV的写入和读取。下面话不多说了,来一起看看详细的介绍吧。 1、需求 某API,GET方法,...

python机器学习之神经网络(一)

python机器学习之神经网络(一)

python有专门的神经网络库,但为了加深印象,我自己在numpy库的基础上,自己编写了一个简单的神经网络程序,是基于Rosenblatt感知器的,这个感知器建立在一个线性神经元之上,神...

PyQT5 emit 和 connect的用法详解

PyQT5 emit 和 connect的用法详解

对于PyQT4, PyQT5在一些使用上有着比较明显的变化有很大的变化,让人惊讶是在emit和connect上的一些变化比较有意思,相信也是QT为了更好的和Python相结合做的改进。...