Python PyQt5 QListWidget自定义项
我对PyQt5非常陌生,我正在尝试在python3+中为qlistwidget创建一个自定义qlistwidgetitem,但到目前为止没有成功 我喜欢并尝试移植的原始代码来自此链接。不幸的是,它位于PyQt4中:Python PyQt5 QListWidget自定义项,python,pyqt5,sys,qlistwidget,qlistwidgetitem,Python,Pyqt5,Sys,Qlistwidget,Qlistwidgetitem,我对PyQt5非常陌生,我正在尝试在python3+中为qlistwidget创建一个自定义qlistwidgetitem,但到目前为止没有成功 我喜欢并尝试移植的原始代码来自此链接。不幸的是,它位于PyQt4中: 欢迎提供任何帮助。PyQt4和PyQt5之间的差异 myQListWidgetItem=qtwidts.QListWidgetItem(self.myQListWidget)这是我唯一不明白的一行。这是否将该项实例化为列表、列表的子项或其他内容?@MichaelEffraimidi
欢迎提供任何帮助。PyQt4和PyQt5之间的差异
myQListWidgetItem=qtwidts.QListWidgetItem(self.myQListWidget)这是我唯一不明白的一行。这是否将该项实例化为列表、列表的子项或其他内容?@MichaelEffraimidis我已成功创建了自定义小部件列表。如何以有效的方式删除它(列表是动态的)?我尝试使用myQListWidget.removeItemWidget(myQCustomQWidget),但它会删除错误“参数1具有意外的类型‘myQCustomQWidget’。我是否必须保留并使用myQListWidgetItem变量,还是有更有效的方法?@MichaelEffraimidis如果您有其他问题,您应该创建一个新问题。
import sys
from PyQt4 import QtGui
class QCustomQWidget (QtGui.QWidget):
def __init__ (self, parent = None):
super(QCustomQWidget, self).__init__(parent)
self.textQVBoxLayout = QtGui.QVBoxLayout()
self.textUpQLabel = QtGui.QLabel()
self.textDownQLabel = QtGui.QLabel()
self.textQVBoxLayout.addWidget(self.textUpQLabel)
self.textQVBoxLayout.addWidget(self.textDownQLabel)
self.allQHBoxLayout = QtGui.QHBoxLayout()
self.iconQLabel = QtGui.QLabel()
self.allQHBoxLayout.addWidget(self.iconQLabel, 0)
self.allQHBoxLayout.addLayout(self.textQVBoxLayout, 1)
self.setLayout(self.allQHBoxLayout)
# setStyleSheet
self.textUpQLabel.setStyleSheet('''
color: rgb(0, 0, 255);
''')
self.textDownQLabel.setStyleSheet('''
color: rgb(255, 0, 0);
''')
def setTextUp (self, text):
self.textUpQLabel.setText(text)
def setTextDown (self, text):
self.textDownQLabel.setText(text)
def setIcon (self, imagePath):
self.iconQLabel.setPixmap(QtGui.QPixmap(imagePath))
class exampleQMainWindow (QtGui.QMainWindow):
def __init__ (self):
super(exampleQMainWindow, self).__init__()
# Create QListWidget
self.myQListWidget = QtGui.QListWidget(self)
for index, name, icon in [
('No.1', 'Meyoko', 'icon.png'),
('No.2', 'Nyaruko', 'icon.png'),
('No.3', 'Louise', 'icon.png')]:
# Create QCustomQWidget
myQCustomQWidget = QCustomQWidget()
myQCustomQWidget.setTextUp(index)
myQCustomQWidget.setTextDown(name)
myQCustomQWidget.setIcon(icon)
# Create QListWidgetItem
myQListWidgetItem = QtGui.QListWidgetItem(self.myQListWidget)
# Set size hint
myQListWidgetItem.setSizeHint(myQCustomQWidget.sizeHint())
# Add QListWidgetItem into QListWidget
self.myQListWidget.addItem(myQListWidgetItem)
self.myQListWidget.setItemWidget(myQListWidgetItem, myQCustomQWidget)
self.setCentralWidget(self.myQListWidget)
app = QtGui.QApplication([])
window = exampleQMainWindow()
window.show()
sys.exit(app.exec_())
import sys
#from PyQt4 import QtGui
from PyQt5 import QtGui, QtWidgets
class QCustomQWidget (QtWidgets.QWidget): # QtWidgets
def __init__ (self, parent = None):
super(QCustomQWidget, self).__init__(parent)
self.textQVBoxLayout = QtWidgets.QVBoxLayout() # QtWidgets
self.textUpQLabel = QtWidgets.QLabel() # QtWidgets
self.textDownQLabel = QtWidgets.QLabel() # QtWidgets
self.textQVBoxLayout.addWidget(self.textUpQLabel)
self.textQVBoxLayout.addWidget(self.textDownQLabel)
self.allQHBoxLayout = QtWidgets.QHBoxLayout() # QtWidgets
self.iconQLabel = QtWidgets.QLabel() # QtWidgets
self.allQHBoxLayout.addWidget(self.iconQLabel, 0)
self.allQHBoxLayout.addLayout(self.textQVBoxLayout, 1)
self.setLayout(self.allQHBoxLayout)
# setStyleSheet
self.textUpQLabel.setStyleSheet('''
color: rgb(0, 0, 255);
''')
self.textDownQLabel.setStyleSheet('''
color: rgb(255, 0, 0);
''')
def setTextUp (self, text):
self.textUpQLabel.setText(text)
def setTextDown (self, text):
self.textDownQLabel.setText(text)
def setIcon (self, imagePath):
self.iconQLabel.setPixmap(QtGui.QPixmap(imagePath).scaled(60, 60)) # + .scaled(60, 60
class exampleQMainWindow (QtWidgets.QMainWindow): # QtWidgets
def __init__ (self):
super(exampleQMainWindow, self).__init__()
# Create QListWidget
self.myQListWidget = QtWidgets.QListWidget(self) # QtWidgets
for index, name, icon in [
('No.1', 'Meyoko', 'lena-2.png'),
('No.2', 'Nyaruko', 'im.png'),
('No.3', 'Louise', 'Ok.png')]:
# Create QCustomQWidget
myQCustomQWidget = QCustomQWidget()
myQCustomQWidget.setTextUp(index)
myQCustomQWidget.setTextDown(name)
myQCustomQWidget.setIcon(icon)
# Create QListWidgetItem
myQListWidgetItem = QtWidgets.QListWidgetItem(self.myQListWidget) # QtWidgets
# Set size hint
myQListWidgetItem.setSizeHint(myQCustomQWidget.sizeHint())
# Add QListWidgetItem into QListWidget
self.myQListWidget.addItem(myQListWidgetItem)
self.myQListWidget.setItemWidget(myQListWidgetItem, myQCustomQWidget)
self.setCentralWidget(self.myQListWidget)
if __name__ == '__main__':
app = QtWidgets.QApplication([]) # QtWidgets
window = exampleQMainWindow()
window.show()
sys.exit(app.exec_())