pyqt6 添加熊猫案例

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 本文介绍了如何实现列表的增加、删除和排序功能。通过使用 PyQt6,创建了一个包含输入框和按钮的界面,实现了列表项的动态管理,并提供了详细的代码示例。

 本文介绍如何实现列表增加删除和排序的功能,效果如下:

image.gif 编辑

1 页面设计

1.1 列表

#列表数据
        self.list = ['福宝', '萌兰', '金虎','蓝天']
        # 创建四行一列标准数据模型
        self.mode=QStandardItemModel(4,1)
        # 将数据中的列表项作为标准数据模型输出
        for i in range(self.mode.rowCount()):
            item = QStandardItem(self.list[i])
            self.mode.setItem(i,0,item)
        self.mode.insertRow(4,QStandardItem("花花回来了"))
        self.listView =QListView()
        self.listView.setModel(self.mode)

image.gif

该模块引用了QStandardItemModel,创建四行一列的标准数据模型对象,因为我们定义的数据有四个大熊猫名字。然后通过循环遍历将里面的数据对象展示到列表视图上。

1.2 输入框和按钮

接下来是文本输入框和三个按钮的UI设计:

#文本输入框
        self.le = QLineEdit()
        self.addPb=QPushButton("增加项",clicked=self.addItem)
        self.delPb=QPushButton("删除项",clicked=self.delItem)
        self.sortPb=QPushButton("项目排序",clicked=self.sortItem)

image.gif

1.3 布局

#创建水平布局,并将所有元素放进去
        hLayout=QHBoxLayout()
        hLayout.setContentsMargins(0,0,0,0)
        hLayout.addWidget(self.addPb)
        hLayout.addWidget(self.delPb)
        hLayout.addWidget(self.sortPb)
        self.vLayout=QVBoxLayout(self)
        self.vLayout.addWidget(self.listView)
        self.vLayout.addWidget(self.le)
        self.vLayout.addLayout(hLayout)

image.gif

为了使效果更好看,我们对列表添加了样式表,你可以在这里修改样式,使得列表更好看:

# 添加样式
        self.listView.setStyleSheet("""
                    QListView {
                        background-color: #E0E0E0;
                        color: #333333;
                        border: 1px solid #BBBBBB;
                    }
                    QListView::Item {
                        padding: 5px;
                    }
                    QListView::Item:hover {
                        background-color: #CCCCCC;
                        color:red;
                    }
                """)

image.gif

效果如下:

image.gif 编辑

2 功能实现

功能实现很简单,就一个增删排序,配置三个函数:

增加的时候获取文本框里的文字内容,然后通过self.mode.appendRow追加行的方式放到数据model里就可以了。

删除,直接通过self.mode.removeRow删除行就可以了,不过这里设置的是删除最后行,您也可以自己指定删除哪一行。

#增加
    def addItem(self):
        num=self.mode.rowCount()
        s =self.le.text()
        if s!='':
            self.mode.appendRow(QStandardItem(s))
    #删除
    def delItem(self):
        num=self.mode.rowCount()
        self.mode.removeRow(num-1)
    #排序
    def sortItem(self):
        self.mode.sort(0)

image.gif

3 完整代码

给大家列出完整的代码,包含测试的main方法。

# -*- coding:utf-8 -*-
"""
------------------------------------------------
File Name: 列表框2.py
Description:
Author: lzq
date:2024-07-27 15:13
------------------------------------------------
"""
import sys
import PyQt6
from PyQt6.QtCore import Qt, QStringListModel
from PyQt6.QtGui import QPainter, QPixmap, QStandardItemModel, QStandardItem
from PyQt6.QtWidgets import QWidget, QTextEdit, QPushButton, QVBoxLayout, QApplication, QRadioButton, QHBoxLayout, \
    QLabel, QCheckBox, QListView, QMessageBox, QLineEdit
class MyWidget(QWidget):
    def __init__(self, parent=None):
        super(MyWidget, self).__init__(parent)
        self.setWindowTitle("列表框QListView 测试2")
        self.resize(500,350)
        self.list = ['福宝', '萌兰', '金虎','蓝天']
        # 创建四行一列标准数据模型
        self.mode=QStandardItemModel(4,1)
        # 将数据中的列表项作为标准数据模型输出
        for i in range(self.mode.rowCount()):
            item = QStandardItem(self.list[i])
            self.mode.setItem(i,0,item)
        self.mode.insertRow(4,QStandardItem("花花回来了"))
        self.listView =QListView()
        self.listView.setModel(self.mode)
        self.le = QLineEdit()
        self.addPb=QPushButton("增加项",clicked=self.addItem)
        self.delPb=QPushButton("删除项",clicked=self.delItem)
        self.sortPb=QPushButton("项目排序",clicked=self.sortItem)
        hLayout=QHBoxLayout()
        hLayout.setContentsMargins(0,0,0,0)
        hLayout.addWidget(self.addPb)
        hLayout.addWidget(self.delPb)
        hLayout.addWidget(self.sortPb)
        self.vLayout=QVBoxLayout(self)
        self.vLayout.addWidget(self.listView)
        self.vLayout.addWidget(self.le)
        self.vLayout.addLayout(hLayout)
        # 添加样式
        self.listView.setStyleSheet("""
                    QListView {
                        background-color: #E0E0E0;
                        color: #333333;
                        border: 1px solid #BBBBBB;
                    }
                    QListView::Item {
                        padding: 5px;
                    }
                    QListView::Item:hover {
                        background-color: #CCCCCC;
                        color:red;
                    }
                """)
    def addItem(self):
        num=self.mode.rowCount()
        s =self.le.text()
        if s!='':
            self.mode.appendRow(QStandardItem(s))
    def delItem(self):
        num=self.mode.rowCount()
        self.mode.removeRow(num-1)
    def sortItem(self):
        self.mode.sort(0)
if __name__=='__main__':
    app = QApplication(sys.argv)
    w = MyWidget()
    w.show()
    sys.exit(app.exec())

image.gif

大家给点鼓励和支持吧!点赞关注是给我最大的反馈!

相关文章
|
1月前
pyqt6 实现熊猫展览馆
本示例使用 PyQt6 实现了一个展示萌兰、福宝、金虎等大熊猫的界面。通过列表选择不同的大熊猫,界面会显示对应的大熊猫图片。代码包括界面布局、图片展示约束、信号和槽函数的连接,以及完整代码示例。
35 2
|
6月前
|
开发者 Python
小游戏实战丨基于Tkinter的五子棋小游戏
小游戏实战丨基于Tkinter的五子棋小游戏
100 4
|
7月前
|
数据采集 Python
2024年最全用Python制作一个可爱的猫咪小秒表_matplolib画猫,常考面试题
2024年最全用Python制作一个可爱的猫咪小秒表_matplolib画猫,常考面试题
2024年最全用Python制作一个可爱的猫咪小秒表_matplolib画猫,常考面试题
|
人工智能 Python
Python 案例分析|21 点扑克牌游戏
本案例通过一个 21 点扑克牌游戏的设计和实现,帮助大家了解使用 Python 数据类型、控制流程和输入输出。
334 0
Python 案例分析|21 点扑克牌游戏
|
7月前
|
存储 定位技术 数据库
【python毕业设计】python基于Pygame的吃金币游戏设计与实现(源码+毕业论文)【独一无二】
【python毕业设计】python基于Pygame的吃金币游戏设计与实现(源码+毕业论文)【独一无二】
167 2
|
7月前
|
人工智能 Go Python
Python 实现 五子棋小游戏【附源码】
Python 实现 五子棋小游戏【附源码】
1071 0
|
7月前
|
定位技术 Python
用Python Tkinter打造的精彩连连看小游戏【附源码】
用Python Tkinter打造的精彩连连看小游戏【附源码】
171 0
|
小程序 Java 关系型数据库
JAVA仿猫眼电影系统(毕业设计)
JAVA仿猫眼电影系统(毕业设计)
195 0
|
小程序 程序员 Python
520表白小程序设计Python代码详解(PyQt5界面,B站动漫风)
520表白小程序设计Python代码详解(PyQt5界面,B站动漫风)
363 0
|
算法
实现抖音霓虹灯效果---OpenCV-Python开发指南(55)
实现抖音霓虹灯效果---OpenCV-Python开发指南(55)
286 0
实现抖音霓虹灯效果---OpenCV-Python开发指南(55)