Box-Display, widget pixmap ausblenden

  • Hi zusammen,

    ich hätte da mal gern wieder ein Problemchen, bei dem ich trotz vieler Versuche nicht weiterkomme.


    Ich zeige im Display u.a. auch ein Cover an; das Coverbild selbst wird im plugin immer wieder neu berechnet und nach /tmp/ geschrieben. Funktioniert alles auch problemlos, und die xml ist auch sehr einfach.

    Aber jetzt mein Problem: Für bestimmte Zustände will ich das Cover ausblenden und nur noch Text anzeigen. Kein Problem, dachte ich, ich blende ja auch in meinen sonstigen Screens diverse pixmaps einfach mit .show() und .hide() ein und aus.

    Aber beim Display scheitere ich da kläglich. Ich hab schon ewig rumprobiert, die Funktion wird definitiv bearbeitet, aber es passiert einfach nichts. Kennt ihr das?

    Code
    self["coverArt"] = Pixmap()
    .
    .
    def showHideLcdCover(self, show):
        if 'cover' in config.plugins.musicplayer.LcdMode.value:
            if show: self["coverArt"].show()
            else: self["coverArt"].hide()


    Gibts da beim Display womöglich einen Trick, den ich nicht kenne? Dachte bis jetzt eigentlich, dass das im Display ein Screen ist wie jeder andere.

    Danke und Grüsse

    Alfred

  • In welchem Screen führst du den Code aus?

    Im normalen Plugin-Screen oder im LCDScreen?

    Wie heißt die Class, wo der Code ausgeführt wird?

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • ich nehme mal an, dass du das nicht in der screen code class ausfuehrst... dann kannst du das so machen:

    Code
    self.summaries[0]["lcd_pic"].instance.setPixmap(LoadPixmap(path, cached=False))
    self.summaries[0]["lcd_pic"].show()/hide()

    lcd_pic ist dann in der lcd screen class definiert.

  • Das könnte dann auch gehen:

    (wenn der Code im normalen Plugin-Screen und nicht in der Class des lcd-Screens ausgeführt wird)

    Code
    self.session.summary["coverArt"].show()

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Hallo ihr 2,

    danke für eure Antworten - hat bis jetzt leider nicht geholfen.

    Ich nutze eine extra class für LCD: class LCDScreenV33(Screen)

    Dort ist auch die o.a. "showHideLcdCover" definiert.

    Die rufe ich dann vom Hauptscreen aus auf.


    Den Versuch "self.session.summary["coverArt"].hide()" direkt im Hauptscreen hab ich auch gemacht, hilft leider nix.


    Vorschlag von alpha: Sieht bei mir fast gleich aus:

    lcdCoverPixmap = LoadPixmap('/tmp/coverlcd.png')

    self["coverArt"].instance.setPixmap(lcdCoverPixmap)


    Das "cached=False" bei LoadPixmap hab ich mal eingefügt, kein Effekt.

    Wenn ich "self.summaries[0]["coverArt"]" einfüge (statt nur self["coverArt"]), erhalte ich "list index out of range"


    Sehr suspekt alles.... Wird wohl wieder irgendwo der Fehler 50 sein (50 cm vor dem Bildschirm). :thinking_face:

    Trotzdem danke für eure Hilfe-Vesuche! :thumbs_up:

    Grüsse

    Alfred


    Edit: Eben habe ich festgestellt, dass das wahrscheinlich schon die ganze Zeit funktioniert. Tatsächlich blende ich das Cover aus, wenn ich nochmal einen Unter-Screen aufrufe - nur dort soll es dann im Display weg sein.

    Und jetzt merke ich erst, dass, wenn ich den Unterscreen verlasse und wieder im Hauptscreen bin, das Cover erst dann ausgeblendet ist. Also liegts nicht an der Funktion an sich, sondern an irgendeinem falschen Aufruf meinerseits.... :loudly_crying_face::loudly_crying_face::loudly_crying_face:

  • Normal sollte das aber gehen :winking_face:


    In der LCDScreen-Class mit:

    self[„coverArt“].show()


    Im Plugin-Screen mit:

    self.session.summary[„coverArt“].show()

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • unnötigerweise belästigt

    da faellt mir eine lustige geschichte ein... beim baecker:

    eine bedienung tanzt vor mir rum und wischt die thekenscheibe sauber. sie wendet sich an mich und sagt: "ich bin gleich fertig, dann belaestige ich sie nicht weiter............ ausser sie wuenschen es." :grinning_face_with_smiling_eyes:

  • Letzte Rückmeldung von mir: Kaum ruf ich die Funktion zum Aus-/Einblenden an der richtigen Stelle auf, funktionierts auch. Also viel Lärm um nichts, sorry! :kissing_face:

    Ist ja auch blöd, dass die Computer nicht mitdenken und immer das machen, was man ihnen sagt, und nicht das, was man eigentlich will :winking_face: