PyQt5 QListWidget – 设置布局模式

PyQt5是一个基于Python语言的GUI开发框架,其中的QListWidget控件提供了显示列表型数据的基础控件。有时候,为了更好地展示列表中的数据,需要调整QListWidget的布局模式。本篇文章将为大家详细讲解Python的PyQt5 QListWidget-设置布局模式的完整使用攻略。

1. 设置QListWidget为网格布局

使用PyQt5中的QListWidget创建一个显示图书信息的控件,展示各图书的名称、作者和出版信息,通过设置为网格布局模式,使图书间的间距更加合适,更加美观。

import sys
from PyQt5.QtWidgets import QApplication, QListWidget, QListWidgetItem, QHBoxLayout, QWidget, QLabel


class BookList(QWidget):
    def __init__(self):
        super(BookList, self).__init__()

        # 创建QListWidget控件
        self.list_widget = QListWidget()

        # 设置QListWidget为网格布局模式
        self.list_widget.setViewMode(QListWidget.IconMode)
        self.list_widget.setResizeMode(QListWidget.Adjust)
        self.list_widget.setMovement(QListWidget.Static)
        self.list_widget.setSpacing(10)

        # 添加书籍
        self.add_book('Python数据分析', 'Wes McKinney', 'O\'Reilly', 'https://covers.oreillystatic.com/images/0636920050896/cat.gif')
        self.add_book('深入浅出MySQL', '胡晓阳', '清华大学', 'https://img9.doubanio.com/view/subject/s/public/s28015297.jpg')
        self.add_book('百年孤独', '加西亚·马尔克斯', '南海出版公司', 'https://img3.doubanio.com/view/subject/s/public/s1727290.jpg')

        layout = QHBoxLayout()
        layout.addWidget(self.list_widget)
        self.setLayout(layout)

    def add_book(self, name, author, publish, url):
        item = QListWidgetItem()
        item_widget = QWidget()
        item_widget.setObjectName('bookItem')

        # 创建各项图书信息控件
        name_label = QLabel(name)
        author_label = QLabel(author)
        publish_label = QLabel(publish)
        image_label = QLabel()
        image_label.setPixmap(QPixmap(url))

        # 设置布局
        layout = QVBoxLayout()
        layout.addWidget(image_label)
        layout.addWidget(name_label)
        layout.addWidget(author_label)
        layout.addWidget(publish_label)
        item_widget.setLayout(layout)

        # 设置QListWidgetItem的大小
        item.setSizeHint(item_widget.sizeHint())
        self.list_widget.addItem(item)
        self.list_widget.setItemWidget(item, item_widget)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    book_list = BookList()
    book_list.show()
    sys.exit(app.exec_())

在上述代码中,我们通过调用QListWidget的setViewMode函数将QListWidget控件设置为网格模式;setResizeMode函数用于指定控件部件的大小调整策略;setMovement函数指明控件部件是否可移动;setSpacing函数用于设置列表项之间的水平间距和垂直间距。

同时,我们还定义了自己的add_book函数,用来添加书籍信息。在该函数中,我们通过QVBoxLayout将各项图书信息控件垂直布局,最终传入QListWidgetItem中进行展示。

2. 设置QListWidget为平铺布局

使用PyQt5中的QListWidget创建一个显示城市信息的控件,展示各城市的名字和照片,通过设置为平铺布局模式,可以更好地展示城市的整体风貌。

import sys
from PyQt5.QtWidgets import QApplication, QListWidget, QListWidgetItem, QHBoxLayout, QWidget, QLabel


class CityList(QWidget):
    def __init__(self):
        super(CityList, self).__init__()

        # 创建QListWidget控件
        self.list_widget = QListWidget()

        # 设置QListWidget为平铺布局模式
        self.list_widget.setViewMode(QListWidget.IconMode)
        self.list_widget.setResizeMode(QListWidget.Adjust)
        self.list_widget.setMovement(QListWidget.Static)
        self.list_widget.setWrapping(True)
        self.list_widget.setWordWrap(True)
        self.list_widget.setIconSize(320, 240)

        # 添加城市
        self.add_city('New York', 'https://cdn.pixabay.com/photo/2016/11/14/04/45/new-york-city-1820413_960_720.jpg')
        self.add_city('Paris', 'https://cdn.pixabay.com/photo/2016/01/19/17/48/louvre-pyramid-1156738_960_720.jpg')
        self.add_city('Tokyo', 'https://cdn.pixabay.com/photo/2015/06/08/15/18/tokyo-802664_960_720.jpg')
        self.add_city('Beijing', 'https://cdn.pixabay.com/photo/2016/08/03/08/10/great-wall-of-china-1566111_960_720.jpg')

        layout = QHBoxLayout()
        layout.addWidget(self.list_widget)
        self.setLayout(layout)

    def add_city(self, name, url):
        item = QListWidgetItem()
        item_widget = QLabel()
        item_widget.setObjectName('cityItem')

        # 创建城市名字标签和照片标签
        name_label = QLabel(name)
        image_label = QLabel()
        image_label.setPixmap(QPixmap(url))

        # 设置布局
        layout = QVBoxLayout()
        layout.addWidget(image_label)
        layout.addWidget(name_label)
        item_widget.setLayout(layout)

        # 设置QListWidgetItem的大小
        item.setSizeHint(item_widget.sizeHint())
        self.list_widget.addItem(item)
        self.list_widget.setItemWidget(item, item_widget)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    city_list = CityList()
    city_list.show()
    sys.exit(app.exec_())

在上述代码中,我们通过调用QListWidget的setViewMode函数将QListWidget控件设置为平铺模式;setResizeMode函数用于指定控件部件的大小调整策略;setMovement函数指明控件部件是否可移动;setWrappingsetWordWrap函数用于控制列表项是否自动换行;setIconSize函数用于设置列表项的图标大小。

我们同样定义了自己的add_city函数,用来添加城市信息。在该函数中,我们通过QVBoxLayout将各项城市信息控件垂直布局,最终传入QListWidgetItem中进行展示。

综上所述,上述两个示例详细说明了如何在Python的PyQt5中使用QListWidget控件,并通过设置不同的布局模式更好地展示列表数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyQt5 QListWidget – 设置布局模式 - Python技术站

(1)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • PyQt5 滚动条控件QScrollBar

    PyQt5是Python中一个常用的GUI编程框架,其中QScrollBar是控制滚动条的一个控件。在本篇攻略中,将详细讲解QScrollBar的使用方法,并给出两个示例说明。 QScrollBar控件属性和方法 下面是QScrollBar控件的一些常用属性和方法: 常用属性: minimum():设置或获取滚动条的最小值。 maximum():设置或获取滚…

    python 2023年5月13日
    00
  • PyQt5 – 为不可编辑的组合框添加边框

    首先,需要明确的是PyQt5是一款Python的GUI编程工具包,而组合框(QComboBox)是其中的一个重要控件。当需要为不可编辑的组合框添加边框时,可以按照以下步骤进行: 导入PyQt5库和必要的类 from PyQt5.QtCore import Qt from PyQt5.QtGui import QPalette from PyQt5.QtWid…

    python 2023年5月10日
    00
  • PyQt5 – 设置复选框指标被按下时的背景图片

    当复选框被按下时需要改变复选框的背景图片,这在PyQt5中可以通过QSS来实现。 步骤一:设置应用背景样式 在使用QSS前,需要设置应用程序的背景样式。我们可以使用QMainWindow的setStyleSheet方法将应用程序的背景样式设置为指定的样式。示例代码如下: from PyQt5.QtWidgets import QApplication, QM…

    python 2023年5月11日
    00
  • PyQt5 QSpinBox – 获取背景角色

    下面是Python的PyQt5库中QSpinBox控件获取背景角色的完整使用攻略。 1.前置知识 在介绍QSpinBox如何获取背景角色之前,需要对以下知识点有一定的了解: PyQt5的基础知识 QSpinBox控件的基本使用方法 如果对PyQt5和QSpinBox不熟悉,可以先去学习一下相关的基础知识。接下来,我们将详细讲解如何获取QSpinBox的背景角…

    python 2023年5月12日
    00
  • PyQt5 QDateEdit – 获取只读属性

    PyQt5是Python语言的一种GUI编程框架,其中QDateEdit是PyQt5提供的一个日期编辑控件。QDateEdit提供了一些方便的日期表达方式,包括日历选择器和可旋转的控件等,而且通过QDateEdit我们可以获取/设置日期和时间。这个控件本身也有一些属性,例如只读属性readOnly,可以通过get/set方法进行操作。 下面分步介绍如何获取Q…

    python 2023年5月12日
    00
  • PyQt5 QSpinBox – 按下时为向下箭头添加边框

    下面是详细的使用攻略: PyQt5 QSpinBox-按下时为向下箭头添加边框 PyQt5 是一个用于构建交互式 Python 应用程序的库,其中提供了许多GUI组件和工具,其中包括QSpinBox组件。QSpinBox是一个数字调节器的组件,用于限定输入的数字值范围。 在默认情况下,QSpinBox右侧的下拉箭头是没有边框的,但是在某些情况下,我们希望通过…

    python 2023年5月12日
    00
  • PyQt5 QCalendarWidget 获取可见属性状态

    下面是Python PyQt5 QCalendarWidget获取可见属性状态的完整使用攻略。 1. 简介 QCalendarWidget是PyQt5中用于显示日历的组件。获取可见属性状态可以通过两种方式实现:一种是使用isVisible()方法,另外一种是使用QCalendarWidget的selectionChanged信号的槽函数来获取当前可见的日期范…

    python 2023年5月12日
    00
  • PyQt5 – 如何获得进度条的百分比

    PyQt5是Python语言下的一款GUI编程工具包,它提供了众多的GUI控件和工具,其中包括了进度条控件。进度条是一种常用于表示某些操作进度的控件,通常会显示一个百分比来表示进度的完成程度。在PyQt5中使用进度条是非常简单的,本篇文章将从以下四个方面详细介绍如何获得进度条的百分比: 创建进度条控件 控制进度条进度 获得进度条的百分比 示例 1. 创建进度…

    python 2023年5月10日
    00
合作推广
合作推广
分享本页
返回顶部