先贴上代码:
import sys
from PyQt5 import QtWidgets, QtGui
import numpy as np
import os
import time
# 定义窗口函数window
app = QtWidgets.QApplication(sys.argv)
# 新建一个窗口,名字叫做w
# 图片和文件,各打开一个
Png1 = QtGui.QPixmap('D:/pycharm/project/1.png')
Png2 = QtGui.QPixmap('D:/pycharm/project/2.png')
Png3 = QtGui.QPixmap('D:/pycharm/project/3.png')
Png4 = QtGui.QPixmap('D:/pycharm/project/4.png')
w = QtWidgets.QWidget()
# 定义w的大小
w.setGeometry(0, 0, 500, 500)
# 给w一个Title
w.setWindowTitle('rader_person')
q = 0
path = "D:/pycharm/project/npy_data" #文件夹目录
files= os.listdir(path) #得到文件夹下的所有文件名称
for file in files: #遍历文件夹
print(file)
loadData = np.load('D:/pycharm/project/npy_data/'+file)
print(loadData.shape)
for i in loadData:
x = i[1][0]
y = i[1][2]
print("\n")
if (q == 0):
l1 = QtWidgets.QLabel(w)
l1.setPixmap(Png1)
l1.setGeometry(0, 500, 30, 30)
l1.setScaledContents(True)
l1.move(int((i[1][0])/50)+100, int((i[1][2])/50)+100)
if (q == 1):
l1 = QtWidgets.QLabel(w)
l1.setPixmap(Png2)
l1.setGeometry(0, 500, 30, 30)
l1.setScaledContents(True)
l1.move(int((i[1][0])/50)+100, int((i[1][2])/50)+100)
if (q == 2):
l1 = QtWidgets.QLabel(w)
l1.setPixmap(Png3)
l1.setGeometry(0, 500, 30, 30)
l1.setScaledContents(True)
l1.move(int((i[1][0])/50)+100, int((i[1][2])/50)+100)
if (q == 3):
l1 = QtWidgets.QLabel(w)
l1.setPixmap(Png4)
l1.setGeometry(0, 500, 30, 30)
l1.setScaledContents(True)
l1.move(int((i[1][0])/50)+100, int((i[1][2])/50)+100)
q = q + 1
# w.removeEventFilter(l1)
w.show()
time.sleep(0.000001)
sys.exit(app.exec_())
主要功能是按照读取npy文件中的标签显示坐立卧行,读取单个文件显示没有问题,但是在轮流读取文件夹中的npy文件并显示时就出现了如下图的问题:
在读取所有文件之前啥都不显示,读取完所有文件之后,才会正常显示最后读取的一个npy文件并显示坐立卧行图片:
将w.show放到最外面的for循环效果同上,放到循环外面就显示一个npy文件的效果图
想请教万能的大神们该怎么修改才能做到实时显示而不是只显示最后一个读取文件的画面。