Hallo bigdane69,
bisher habe ich nur die grundlegen Funktionen ausprobiert, die ich dringend benötige:
- Klick auf (transparente) Grafiken kann Befehle ausführen
- auf Fernbedienungsbefehle kann ebenso wie auf Tastaturereignisse reagiert werden
Die Software und das aus meiner Sicht zu entwickelnde "Screendesign" habe ich zunächst erst einmal nach hinten verlagert, um mich dem schwierigsten Teil für mich - dem Gehäusebau - zuzuwenden. Daher kann ich keine fertigen Bilder zur Verfügung stellen.
Prinzipiell musst Du aber bei jedem Tasten- oder Touchscreen-Druck den Bildschirm KOMPLETT neu zeichnen. Aber KEINE ANGST, dass wird vom Raspi so schnell erledigt, das man das Neuzeichnen nicht sieht. Man könnte z.B. bei meinem "Test-Radio-Bildschirm" die aktuelle Station weiß unterlegen und farbig darstellen. Bei Pfeil nach rechts könnte man den entsprechenden Button rechts mit einem weißen Rahmen darstellen. Erst beim Druck auf Enter würde dieser dann farbig dargestellt, weiß unterlegt und der entsprechende Sender abgespielt werden. Beim Touchscreen kannst Du natürlich gleich auf den entsprechenden Radio-Button drücken, der abgespielt werden soll ... und zeichnest dann ebenfalls den kompletten Screen neu.
Falls Du Dich nicht mit Grafiken rumärgern möchtest, nachfolgende Oberfläche erledigst Du mit ein paar Zeilen Code, ohne Photoshop, Bitmaps oder andere Pixelwerkzeuge zu bemühen:
# Fill background and draw some boxes
background = pygame.Surface(screen.get_size())
background = background.convert()
background.fill(BLACK)
box = pygame.draw.rect(background, YELLOW,(40, 0, 240 , 60))
box = pygame.draw.rect(background, GREEN, (40, 80, 240, 60))
box = pygame.draw.rect(background, RED, (40, 160, 240, 60))
# Display some text
font = pygame.font.Font(None, 36)
text1 = font.render("play MPC 1", 1, (BLACK))
textpos1 = text1.get_rect(centerx=background.get_width()/2,centery=30)
background.blit(text1, textpos1)
text2 = font.render("play MPC 2", 1, (BLACK))
textpos2 = text2.get_rect(centerx=background.get_width()/2,centery=110)
background.blit(text2, textpos2)
text3 = font.render("Touch here to quit", 1, (BLACK))
textpos3 = text3.get_rect(centerx=background.get_width()/2,centery=190)
background.blit(text3, textpos3)
screen.blit(background, (0, 0))
pygame.display.flip()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONDOWN:
if textpos1.collidepoint(pygame.mouse.get_pos()):
p = subprocess.Popen("mpc play 1", shell=True, stdout=subprocess.PIPE)
p.wait()
if textpos2.collidepoint(pygame.mouse.get_pos()):
p = subprocess.Popen("mpc play 2", shell=True, stdout=subprocess.PIPE)
p.wait()
if textpos3.collidepoint(pygame.mouse.get_pos()):
pygame.quit()
sys.exit()
running = False
elif event.type == KEYDOWN and event.key == K_ESCAPE:
running = False
pygame.display.update()
Display More
Falls Du komplette Testcodes haben willst, sende mir 'ne PM.