image.png
具体说明如下:
- 主窗口重载 QToolBox
- “我的好友”,“黑名单”对应QGroupBox类,通过如下代码加入主窗口:
QToolBox.addItem(QGroupBox, "我的好友")
- 每个好友项对应QToolButton类,多个好友利用QVBoxLayout类进行布局,好友项创建代码如下:
b = QToolButton()
b.setText("张三")
b.setIcon(QPixmap("1.png"))
b.setIconSize(QPixmap("1.png").size())
b.setAutoRaise(True)
b.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonTextBesideIcon)
- 用到的图片放在工程文件夹根目录下即可,自己随便画个了。_
好友列表偷了个懒,不过感觉这样看的更清楚,very easy的……
模仿QQ 界面
import sys
from PySide6.QtGui import QPixmap
from PySide6.QtWidgets import QToolBox, QApplication, QGroupBox, QVBoxLayout, QToolButton
from PySide6.QtCore import Qt
class Drawer(QToolBox):
def __init__(self):
super(Drawer, self).__init__()
self.setWindowTitle("QQ")
self.init_ui()
def init_ui(self):
data = {
"我的好友":
[
{
"name": "张三",
"bitmap": "1.png"
},
{
"name": "李四",
"bitmap": "1.png"
},
{
"name": "张飞",
"bitmap": "1.png"
},
{
"name": "关羽",
"bitmap": "1.png"
},
{
"name": "刘备",
"bitmap": "1.png"
}
],
"黑名单":
[
{
"name": "张三",
"bitmap": "1.png"
},
{
"name": "李四",
"bitmap": "1.png"
},
{
"name": "张飞",
"bitmap": "1.png"
},
{
"name": "关羽",
"bitmap": "1.png"
},
{
"name": "刘备",
"bitmap": "1.png"
}
]
}
for key in data.keys():
group_box = QGroupBox()
layout = QVBoxLayout(group_box)
for person in data[key]:
b = QToolButton()
b.setText(person["name"])
b.setIcon(QPixmap(person["bitmap"]))
b.setIconSize(QPixmap(person["bitmap"]).size())
b.setAutoRaise(True)
b.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonTextBesideIcon)
layout.addWidget(b)
layout.addStretch()
self.addItem(group_box, key)
if __name__ == "__main__":
app = QApplication()
w = Drawer()
w.show()
sys.exit(app.exec())