Forum Programmation.python Comment ajoutée une icon a chaque entrée com

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
-8
29
avr.
2019

j'ai créé un dossier icon qui contien des icônes drapeaux de 128px et j'aimerais les afficher a chaque entrée com une icon qui correspond

    from Components.Input import Input
    from enigma import gFont, eListboxPythonMultiContent, RT_HALIGN_LEFT, RT_HALIGN_RIGHT, RT_HALIGN_CENTER, RT_VALIGN_CENTER, gPixmapPtr, ePicLoad
    from Components.ScrollLabel import ScrollLabel
    from Screens.MessageBox import MessageBox
    from Screens.Screen import Screen
    from Screens.Console import Console
    from Components.MenuList import MenuList
    from Components.ActionMap import ActionMap
    from Plugins.Plugin import PluginDescriptor
    from Components.Label import Label
    from Tools.Directories import fileExists
    ###########################################################################

    class RassemblPluginAboutScreen(Screen):
        skin = """
                    <screen position="100,150" size="460,400" title="Rassembl Plugin version 1.0" >
                            <widget name="icon" pixmap="Adresse_images" position="10,10" size="420,380" font="Regular;20" scrollbarMode="showOnDemand" foregroundColor=>

            self["actions"] = ActionMap(["SetupActions"],
                {
                    "ok": self.close,
                    "cancel": self.close,


                }, -1)
    class MyShPrompt(Screen):
        skin = """
                    <screen position="100,150" size="460,400" title="Rassembl Plugin V1.0" >
                            <widget name="myMenu" position="4,1" size="420,380" valign="center" halign="right" font="Regular;20" foregroundColor="white" scrollbarMode="showOnDemand" />
                        <widget name="myGreenBtn" position="176,359" size="124,33" valign="center" halign="centre" zPosition="2" font="Regular;20" transparent="1" foregroundColor="white" />
                            <ePixmap position="161,359" size="124,33" zPosition="0" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Rassembl2Plugin/icons/green.png" transparent="1" alphatest="on" />
                                    </screen>"""

        def __init__(self, session, args = 0):
            self.session = session

            list = []
            list.append(("ControPart", "com_three"))
            list.append((" Informt ", "com_four"))
            list.append(("Conf", "com_five"))
            list.append(("Facb", "com_two"))
            list.append(("HDMU_SoftcamControl", "com_one"))
            list.append(("BMediaCenter", "com_sixe"))
            list.append(("SoftcamControl", "com_seven"))
            list.append(("SkinSelector", "com_eight"))
            list.append(("NetworkBrowser", "com_nine"))
            # list.append(("Panel", "com_ten"))
            list.append((_("Exit"), "exit"))
            Screen.__init__(self, session)
            self["myMenu"] = MenuList(list)
            self["myGreenBtn"] = Label(_("About"))
            self["myActionMap"] = ActionMap(["SetupActions", "ColorActions"],
            {
                "ok": self.go,
                "cancel": self.cancel,
                "green":self.textilos,
            }, -1)

        def go(self):
            returnValue = self["myMenu"].l.getCurrentSelection()[1]
            print "\n[MyShPrompt] returnValue: " + returnValue + "\n"

            if returnValue is not None:
                if returnValue is "com_one":
                    if fileExists("/usr/lib/enigma2/python/Plugins/Extensions/HDMUCenter/plugin.pyo") == False:
                        self.session.open(MessageBox,"Plugin SoftCamManager Non Insataller.....\n Voulez Vous L'installer.....")       
                    else:
                        from Plugins.Extensions.HDMUCenter.plugin import *
                        self.session.open(HDMU_MainMenu)                        

                if returnValue is "com_two":
                    if fileExists("/usr/lib/enigma2/python/Plugins/Extensions/Rassembl2Plugin/WeatherPlugin/plugin.pyo") == False:
                        self.session.open(MessageBox,"Plugin Weater Non Insataller.....\n Voulez Vous L'installer.....")
                    else:   
                        from Plugins.Extensions.Rassembl2Plugin.WeatherPlugin.plugin import *
                        self.session.open(MSNWeatherPlugin)

                elif returnValue is "com_three":
                    if fileExists("/usr/lib/enigma2/python/Plugins/Extensions/Rassembl2Plugin/Quran/plugin.pyo") == False:
                        self.session.open(MessageBox,"Plugin Quran Non Insataller.....\n Voulez Vous L'installer.....")
                    else:   
                        from Plugins.Extensions.Rassembl2Plugin.Quran.plugin import *
                        self.session.open(StreamTVList)

                elif returnValue is "com_four":
                    if fileExists("/usr/lib/enigma2/python/Plugins/Extensions/Rassembl2Plugin/Eijjaz1/plugin.pyo") == False:
                        self.session.open(MessageBox,"Plugin Eijjaz1 Non Insataller.....\n Voulez Vous L'installer.....")
                    else:   
                        from Plugins.Extensions.Rassembl2Plugin.Eijjaz1.plugin import *
                        self.session.open(StreamTVList)

                elif returnValue is "com_five":
                    if fileExists("/usr/lib/enigma2/python/Plugins/Extensions/Rassembl2Plugin/Qawanine_Al9or2ane/plugin.pyo") == False:
                        self.session.open(MessageBox,"Plugin Qawanine_Al9or2ane Non Insataller.....\n Voulez Vous L'installer.....")
                    else:
                        from Plugins.Extensions.Rassembl2Plugin.Qawanine_Al9or2ane.plugin import *
                        self.session.open(StreamTVList)

                elif returnValue is "com_sixe":
                    if fileExists("/usr/lib/enigma2/python/Plugins/Extensions/BMediaCenter/plugin.pyo") == False:
                        self.session.open(MessageBox,"Plugin BMediaCenter Non Insataller.....\n Voulez Vous L'installer.....")
                    else:
                        from Plugins.Extensions.BMediaCenter.plugin import *
                        self.session.open(HDMUMC_MainMenu)
                elif returnValue is "com_seven":
                    if fileExists("/usr/lib/enigma2/python/Plugins/Extensions/HDMUCenter/HDMU_SoftcamControl.pyo") == False:
                        self.session.open(MessageBox,"Plugin HDMU_SoftcamControl Non Insataller.....\n Voulez Vous L'installer.....")
                    else:
                        from Plugins.Extensions.HDMUCenter.HDMU_SoftcamControl import *
                        self.session.open(HDMU_SoftcamControl)
                elif returnValue is "com_eight":
                    if fileExists("/usr/lib/enigma2/python/Plugins/SystemPlugins/SkinSelector/plugin.pyo") == False:
                        self.session.open(MessageBox,"Plugin SkinSelector Non Insataller.....\n Voulez Vous L'installer.....")
                    else:
                        from Plugins.SystemPlugins.SkinSelector.plugin import *
                        self.session.open(SkinSelector)
                elif returnValue is "com_nine":
                    if fileExists("usr/lib/enigma2/python/Plugins/SystemPlugins/NetworkWizard/NetworkWizard.pyo") == False:
                        self.session.open(MessageBox,"Plugin NetworkWizard Non Insataller.....\n Voulez Vous L'installer.....")
                    else:
                        from Plugins.SystemPlugins.NetworkWizard.NetworkWizard import *
                        self.session.open(NetworkWizard)
                # elif returnValue is "com_ten":
                    # if fileExists("/usr/lib/enigma2/python/Plugins/Extensions/Rassembl2Plugin/Panel.py") == False:
                        # self.session.open(MessageBox,"Plugin Panel Non Insataller.....\n Voulez Vous L'installer.....")
                    # else:
                        # from Plugins.Extensions.Rassembl2Plugin.Panel import *
                        # self.session.open(workWizard)     
                else:
                    print "\n[MyShPrompt] cancel\n"
                    self.close(None)
  • # Pas une réponse à ta question

    Posté par  (site Web personnel) . Évalué à 6. Dernière modification le 29/04/19 à 19:59.

    Mais plusieurs points:

    • Avec une question de cet ordre, précise dans le sujet l'API graphique que tu utilises (là il ne me semble reconnaître ni wxWindow, ni Tkinter, ni Qt… peut-être est-ce du GTK) — pas impossible que le moinssage actuel soit lié à ça.
    • Essaie de corriger les fautes les plus courantes (accord du participe passé) — installe le plugin grammalecte sous Firefox pour aider à corriger.
    • Quand une expression (ici les appels à fileExists(…)) produit un booléen, plutôt que de tester == True ou == False dans une condition if, utilises plutôt if fileExists(…): ou if not fileExists(…):.
    • Plutôt que de placer le chemin d'accès à ton installation /usr/lib/enigma2/python/Plugins/Extensions en dur partout dans les expressions, au minimum utilise une constante, et plus tard tu pourras utiliser une variable modifiable quelque part (environnement, option ligne de commande, préférences) sans avoir à modifier le source.
    • Pour joindre ensuite les chemins, utilise les fonctions dans le module os.path ou bien le récent module pathlib.
    • Ta chaîne d'erreur est toujours la même, avec juste le nom du plugin qui change… utilise une chaîne modèle et la méthode format¹.
    • Pour l'import des plugins, une façon de faire est de tenter l'import et d'intercepter l'exception si le module n'est pas importable².
    • En creusant un peu dans la doc Python, tu devrais pouvoir utiliser le module importlib et te créer une fonction de chargement de plugin, ton code sera grandement simplifié avec cette factorisation.

    Et, désolé, pas de réponse sur les icônes.

    ¹ Utilisation modèle + format

    MSGERR = "Plugin {} non installé…\n Voulez Vous L'installer?"
    
    self.session.open(MessageBox, MSGERR.format("Quran"))

    ² Import et récupération en cas d'échec

    if :
        try:
            from Plugins.Extensions.Rassembl2Plugin.Quran.plugin import *
            self.session.open(StreamTVList)
        except ImportError:
            self.session.open(MessageBox, MSGERR.format("Quran"))

    Python 3 - Apprendre à programmer en Python avec PyZo et Jupyter Notebook → https://www.dunod.com/sciences-techniques/python-3

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.