python - 在 python 的单个窗口上显示刷新 RGB 矩阵的好方法是什么?
问题描述
我需要将矩阵显示到一个窗口上,该窗口以高频率刷新。有没有办法在 python 中完成这项工作?
我利用 pygame 库来显示一个简单的闪烁屏幕。完成的工作是我需要的,但是刷新率太低,我认为这与程序内部矩阵的按位运算有关。
import pygame, sys, random
import fetch_module
screen = ""
class Frontend:
def __init__(self,**kwargs):
self.length = 1280
self.height = 720
if "length" in kwargs.keys():
self.length = kwargs["length"]
if "height" in kwargs.keys():
self.height = kwargs["height"]
#self.screen = pygame.display.set_mode((self.length,self.height),flags=(pygame.FULLSCREEN|pygame.HWSURFACE|pygame.DOUBLEBUF))
self.screen = pygame.display.set_mode((self.length,self.height))
pygame.display.set_caption('Evolution')
red = pygame.Color(250,255,250,0)
zero = pygame.Color(0,0,0,0)
self.buffer1 = [[int(red) for i in range(self.length)] for j in range(self.height)]
self.buffer2 = [[int(zero) for i in range(self.length)] for j in range(self.height)]
print("Init routine completed")
def get_arr(self):
resp = []
buff = []
if (self.ctr%2) == 0:
#print("buff1")
buff = self.buffer1
else:
#print("buff2")
buff = self.buffer2
for i in buff:
for j in i:
b = j & 255
g = (j >> 8 ) & 255
r = (j >> 16) & 255
a = (j >> 32) & 255
resp.append(r)
resp.append(g)
resp.append(b)
resp.append(a)
#self.buffer1 = self.buffer2
self.ctr+=1
return bytes(resp)
def service(self):
print("Inside service routine")
self.ctr = 0
while True:
buff = self.screen.get_buffer()
buff.write(self.get_arr())
pygame.display.update()
if self.ctr == 10:
break
#self.buffer2 = fetch_module.fetch("http://localhost:8000",name="Evolution Frontend",height=self.height,length=self.length)
pygame.quit()
front = Frontend()
front.service()
帧速率约为 1 帧/秒,它需要远高于此。
解决方案
推荐阅读
- react-native - 使用 Apollo 客户端和 Apollo Server 的 React Native 应用程序的 Mutation 类型的未知参数“on field”
- c++ - 使用需要函数指针的 C 库时的 C++ 习惯用法?
- c# - 测试有 null IdentityResult
- machine-learning - Keras 标记化(适合文本)
- python - 使用 SIM800c GSM 模块进行网络定位的 Python 代码
- pdf - SSRS - “打印我们将为您的报告创建一个便于打印的 PDF 版本。”
- spring - 访问 BeanDefinitionRegistryPostProcessor 中的弹簧加载属性
- stenciljs - 使用 stencilJS 生成动态 Unorderlist Web 组件
- javascript - 用于多选的 JS 脚本
- java - docx4j 正确定位段落