import pygame
import time
# 初始化Pygame
pygame.init()
# 设置窗口大小
window_width, window_height = 550, 500
screen = pygame.display.set_mode((window_width, window_height))
pygame.display.set_caption('跑马灯')
# 设置灯光的大小和间距
light_size = 15
light_spacing = 20
lights_per_row = 25 # 每行灯光数量
total_rows = 20 # 总行数
# 设置背景颜色和灯光颜色
background_color = (255, 255, 255) # 将背景颜色设置为黑色
light_color_on = (0, 255, 0)
light_color_off = (255, 255, 0) # 将灭灯状态的颜色设置为深绿色
time_color = (255, 0, 0) # 将时间信息的颜色设置为红色
# 设置帧率,参照显示屏的刷新率进行调整即可,刷新率越高,走马灯的时间精度越高
fps = 240
# 创建一个Clock对象用于控制帧率
clock = pygame.time.Clock()
while True:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
# 获取当前时间和毫秒
current_time = time.time()
milliseconds = int((current_time - int(current_time)) * 1000)
# 清空屏幕
screen.fill(background_color)
# 显示当前时间信息
font = pygame.font.Font(None, 48)
time_str = time.strftime("Time: %H:%M:%S", time.localtime(current_time))
time_text = font.render(f'{time_str}.{milliseconds:03}', True, time_color)
screen.blit(time_text, (50, 0))
# 更新灯光状态
for i in range(total_rows):
for j in range(lights_per_row):
light_index = i * lights_per_row + j
if light_index < milliseconds % (total_rows * lights_per_row): # 根据毫秒数确定灯的状态
color = light_color_on
else:
color = light_color_off
pygame.draw.rect(screen, color, ((j + 1) * light_spacing, (i + 3) * light_spacing, light_size, light_size))
# 刷新屏幕
pygame.display.flip()
# 控制帧率
clock.tick(fps)
这段代码实现了一个跑马灯效果,具体实现步骤如下:
可以根据显示屏的刷新率进行调整,包含屏幕分辨率的调整,可以用来更加精确的测量视频的视频的端到端的时延测试,再配合高刷显示屏,以及高帧率相机即可实现更加精确的时延测试,若是追求到1毫秒精度的,还是建议购买专门的跑马灯计时设备。此方案的精度会受到显示屏的刷新率限制。
运行效果如下:
转载请备注原文地址即可,非常感谢!根据需要自行修改即可