这是一种列表,当里面的列表项内容行数大于列表框的高度后,自动出现滚动条
任务目标:
用列表展示课程,双击选中后可以弹出提示框选择显示选择的内容。
设计:
完整代码:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(473, 348)
self.listWidget = QtWidgets.QListWidget(Form)
self.listWidget.setGeometry(QtCore.QRect(110, 70, 256, 192))
self.listWidget.setObjectName("listWidget")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
self.listWidget.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)# 设置选中方式为整行选中
self.listWidget.setViewMode(QtWidgets.QListView.ListMode)# 设置以列表形式显示数据
self.listWidget.setWordWrap(True) # 设置自动换行,大家可以调一下试试
self.listWidget.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)#设置单选
# self.listWidget.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection)设置列表中可以多选
from collections import OrderedDict
# 定义有序字典,作为List列表的数据源,键值对
dict=OrderedDict({'1':'操作系统',
'2':'数据结构',
'3':'计算机网络',
'4':'离散数学',
'5':'需求工程',
'6':'Python Web',
'7':'java EE',
'8':'区块链'})
for key,value in dict.items():# 遍历字典,并分别获取到键值
self.item = QtWidgets.QListWidgetItem(self.listWidget)# 创建列表项
self.item.setText(key+':'+value) # 设置项文本
self.item.setToolTip(value) # 设置提示文字
self.listWidget.itemDoubleClicked.connect(self.gettext)
# 自定义槽函数,获取列表选中项的值
def gettext(self,item):
if item.isSelected(): # 判断项是否选中
from PyQt5.QtWidgets import QMessageBox
QMessageBox.information(MainWindow,"提示","您选择的是:"+item.text(),QMessageBox.Ok)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
import sys
if __name__ == '__main__':
app=QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_Form()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
效果:
双击后弹出