在 PyQt5 中使用 QListWidget、QLabel 和 QComboBox 创建自定义小部件?

Create a Custom Widget with QListWidget,QLable and QCombo Box in PyQt5?

想要使用 QListWidget、Qlabels 和 QCombo 框创建一个自定义小部件

在我的代码中,包含一个 QListwidget,

三个标签显示QListWidget中的项目数,第一个是QListWidget中的总可用项目,第二个是过滤条件(项目开始),第三个也是显示项目的数量过滤器(匹配包含)。

还有一个用于设置 QListWidget 默认视图的组合框。如何制作。

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

items = ["item001","item002","item003","item004","item005","001item","002item","new001item","new003item"]

class CustomWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Cutom Widget")

        self.txtbox = QLineEdit()
        self.lstbox = QListWidget()
        self.lstbox.clicked.connect(self.select_item)
        self.lbl_Total = QLabel("Total Available Items :")
        self.lbl_start = QLabel("Item Starts with :")
        self.lbl_contain = QLabel("Items Contains With:")
        self.lbl_Total_count = QLabel("99,999")
        self.lbl_start_count = QLabel("99,999")
        self.lbl_contain_count = QLabel("99,999")
        self.combox = QComboBox()
        self.combox.addItem("Item Starts")
        self.combox.addItem("Item Contains")
        self.combox.addItem("Item Ends")
        self.lbl_combo_deatils = QLabel("Default View :")

        self.lstbox.addItems(items)
        total_item = self.lstbox.count()
        self.lbl_Total_count.setText(str(total_item))

        self.vbox = QVBoxLayout()
        self.vbox.addSpacing(4)
        self.vbox.setAlignment(Qt.AlignCenter)
        self.vbox.setContentsMargins(0,0,0,0)
        self.fbox = QFormLayout()

        self.fbox.addRow(self.lbl_Total,self.lbl_Total_count)
        self.fbox.addRow(self.lbl_start,self.lbl_start_count)
        self.fbox.addRow(self.lbl_contain,self.lbl_contain_count)
        self.fbox.addRow(self.lbl_combo_deatils,self.combox)

        self.vbox.addWidget(self.lstbox)
        self.vbox.addLayout(self.fbox)


        self.hbox = QHBoxLayout()
        self.hbox.addWidget(self.txtbox)
        self.hbox.setAlignment(Qt.AlignTop)
        self.hbox.addStretch(10)

        self.hbox.addLayout(self.vbox)
        self.setLayout(self.hbox)

    def select_item(self):
        self.txtbox.setText(self.lstbox.currentItem().text())


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

我很难理解这种情况下的实际问题是什么。您已经拥有自定义 class。如果您想要自定义小部件的多个副本,只需创建多个实例即可,即

if __name__ =='__main__':
    app = QApplication(sys.argv)
    main_widget = QWidget()
    layout = QGridLayout(main_widget)
    for row in range(2):
        for column in range(4):
            widget = CustomWidget()
            layout.addWidget(widget, row, column)
    main_widget.show()
    app.exec()