关于PyQt5中QListWidgetItem不显示的问题

在我做过的一个项目中,需要利用QT实现一个人脸考勤打卡的界面,人脸打卡成功之后,会在界面的右边区域显示一条打卡信息。界面实现如下。

关于PyQt5中QListWidgetItem不显示的问题_第1张图片

整个实现过程还算比较顺利,只是在动态添加打卡信息到右侧的列表时,发现Item并不显示,而是出现了一个透明的框。后来查看Qt的开发文档才发现,QT不允许直接在非UI线程中添加Item。而我开发时,担心在添加过程中,会导致UI卡顿的问题,所以正是将该操作放到线程里面的。
后来根据文档提示,改为利用Qt的信号机制来实现该功能。目前已经正常运行了。具体实现,部分代码如下。

	#绑定槽函数
	self.signal_has_new_item.connect(self.addItem)
	
	#槽函数
    def addItem(self,name,time):
        try:
            list_item = QtWidgets.QListWidgetItem(self.ui.list_wigets)
            list_item.setBackground(QtGui.QColor(17, 23, 47))
            size = list_item.sizeHint()
            list_item.setSizeHint(QtCore.QSize(size.width(), 60))
            self.ui.list_wigets.addItem(list_item)
            sig_in = SignInItemWidget()
            sig_in.setName(str(name))
            sig_in.setTime(str(time))
            self.ui.list_wigets.setItemWidget(list_item, sig_in)
            self.ui.list_wigets.setCurrentRow(self.ui.list_wigets.count() - 1)
        except:
            print(traceback.print_exc())
		
		#触发
	if self.debug:
     	self.signal_has_new_item.emit('test', '09:00:00')

你可能感兴趣的:(QT)