公司要求做一個視覺刺激界面。
要求穩定1秒60幀的重繪頻率。
而我這個Java臨時拉來做python也很頭疼,看了好幾天檔案還是無法滿足公司這個穩定重繪的要求。
現在做的GUI圖形界面使用的是pygame。
具體代碼如下:
import pygame, sys
def pygame_test():
# 初始化
pygame.init()
# 創建一個視窗
size = width,height = 1300, 700
screen = pygame.display.set_mode(size, pygame.DOUBLEBUF | pygame.HWSURFACE) #視窗模式
# 設定視窗標題
pygame.display.set_caption('Demo')
FPS = 60
fpsClock = pygame.time.Clock()
#放在上面提前渲染
img1 = "../img/frame_10.tiff"
img2 = "../img/frame_11.tiff"
img3 = "../img/frame_12.tiff"
img4 = "../img/frame_13.tiff"
n=1
renderingImg1 = pygame.image.load(img1).convert()
renderingImg2 = pygame.image.load(img2).convert()
renderingImg3 = pygame.image.load(img3).convert()
renderingImg4 = pygame.image.load(img4).convert()
# backgroud_img = pygame.image.load(image).convert_alpha() # 加載方式3(適用于有alpha通道的影像,并且可以提高渲染速度)
# 通過不斷回圈來偵聽事件
while True:
# 獲取所有事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
# 判斷當前事件是否為點擊右上角退出鍵
pygame.quit()
sys.exit() # 需要提前 import sys
elif event.type == pygame.VIDEORESIZE:
size = width, height = event.size[0], event.size[1] # 獲取新的size
screen = pygame.display.set_mode(size,pygame.DOUBLEBUF | pygame.HWSURFACE) #之后要重新渲染
if(n==1):
screen.blit(pygame.transform.scale(renderingImg1,size),(0,0))
elif(n==2):
screen.blit(pygame.transform.scale(renderingImg2,size),(0,0))
elif(n==3):
screen.blit(pygame.transform.scale(renderingImg3,size),(0,0))
elif(n==4):
screen.blit(pygame.transform.scale(renderingImg4,size),(0,0))
n=n+1
if (n > 4):
n = 1
pygame.display.flip()
fpsClock.tick(FPS)
#pygame.time.delay(16)
pygame_test()
要求就是現在有4張圖片,要求1s60hz穩定的在頁面上重繪這些圖片達到刺激效果。
本質上是希望實作MLB的Screen函式或者是PTB的Screen函式。于是研究了很多雙緩沖但還是沒辦法比較穩定的重繪。
請各位大佬指點。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/272998.html
上一篇:求助---自動化測驗的,s求助---自動化測驗的, selenium相關的
下一篇:vscode 中 Unable to import 'mysql.connector'pylint(import-error)
