Fragen zu MenuList in Plugin

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Fragen zu MenuList in Plugin

      Ich habe mir ein Plugin gebaut, welches eine Liste mit Menübefehlen aufbaut und diese dann über MenuList anzeigt.

      Quellcode

      1. list = []
      2. list.append(("1 - ...", "com_1"))
      3. list.append(("2 - ...", "com_2"))
      4. ...
      5. list.append((_("0 - Ende"), "exit"))
      6. Screen.__init__(self, session)
      7. self["myMenu"] = MenuList(list)
      8. self["myActionMap"] = ActionMap(["SetupActions"],
      Funktioniert auch alles. 2 Dinge würde ich gerne noch ändern. Gibt es eine Möglichkeit, beim Anzeigen der Liste gleich auf einen bestimmten Eintrag zu springen (Defaultwert). Und 2. kann ich über der Liste eine Überschrift anzeigen oder muss ich die in die Liste mit integrieren. Danke im Voraus.
    • Eine Überschrift über der Liste ist ein eigenes Widget, hat mit der Liste selbst nichts zu tun. Die Anzeige ist vom Skin abhängig.

      Kannst es mal mit den Titel versuchen.

      Python-Quellcode

      1. def __INIT__
      2. self.onLayoutFinish.append(self.onLayout)
      3. def onLayout(self):
      4. self.setTitle("Überschrift")


      Innerhalb der Liste kannst einen "Blanko" Eintrag setzen

      Quellcode

      1. self.list.append(getConfigListEntry(_(" (Infotext)")))


      Selektieren kannst so:

      Python-Quellcode

      1. self["myMenu"].setCurrentIndex(Index)
      Rechtschreibfehler sind beabsichtigt, sie fördern ein genaueres Lesen
      Debug Log aktivieren Putty Telnet Screenshots erstellen
    • Habe das mit dem Index jetzt ausprobiert, leider schmiert mir das Plugin jetzt ab. Ist der Index die Variable aus der Liste (z.B. com_1) oder der Index innerhalb der Liste (z.B. 2). Bei der 2. Lösung schmiert das Plugin nach Aufruf ab. Kommt das self["myMenu"].setCurrentIndex(Index) nach dem self["myMenu"] = MenuList(list), muss ja eigentlich, da es ja sonst noch nicht definiert ist.
    • Hast es dich schon selbst beantwortet.
      Das Setzen vom Index muss natürlich nach der Definition von mylist kommen. Eventuell sogar in „onlayout“

      Der Index ist die Nummer vom Eintag beginnend mit 0
      Rechtschreibfehler sind beabsichtigt, sie fördern ein genaueres Lesen
      Debug Log aktivieren Putty Telnet Screenshots erstellen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von hajeku123 ()

    • bitte sehr...

      Auswahl_233.png
      Spoiler anzeigen


      Python-Quellcode

      1. #!/usr/bin/env python
      2. # -*- coding: utf-8 -*-
      3. from Plugins.Plugin import PluginDescriptor
      4. from Components.config import config,ConfigSubsection,ConfigInteger,ConfigSelection,ConfigYesNo,getConfigListEntry,ConfigText
      5. from Components.ConfigList import ConfigListScreen
      6. from Screens.Screen import Screen
      7. from Components.Sources.StaticText import StaticText
      8. from Components.ActionMap import NumberActionMap,ActionMap
      9. from Screens.MessageBox import MessageBox
      10. import traceback
      11. import sys
      12. config.plugins.xtest = ConfigSubsection()
      13. config.plugins.xtest.onoff = ConfigSelection(default = "on", choices = [("on", _("on")), ("off", _("off"))])
      14. config.plugins.xtest.e1 = ConfigText(default = "Eintrag 1", fixed_size = False)
      15. config.plugins.xtest.e2 = ConfigText(default = "Eintrag 2", fixed_size = False)
      16. config.plugins.xtest.e3 = ConfigInteger(default = 1, limits = (1, 999))
      17. config.plugins.xtest.e4= ConfigYesNo(default = True)
      18. config.plugins.xtest.none = ConfigSelection(default = " ", choices = [(" ", _(" "))])
      19. class xtest_config(ConfigListScreen,Screen):
      20. def __init__(self, session):
      21. try:
      22. print "[XTEST] xtest_config"
      23. Screen.__init__(self, session)
      24. self.session=session
      25. self.skinName = ["XTEST", "Setup"]
      26. self.onChangedEntry = [ ]
      27. self.list = []
      28. self['key_red'] = StaticText(_('Cancel'))
      29. self['key_green'] = StaticText(_('OK'))
      30. self.createsetup()
      31. self['actions'] = NumberActionMap(["ColorActions","SetupActions"],
      32. {'cancel': self.keyCancel,
      33. 'green': self.ok,
      34. 'ok': self.ok
      35. }, -1)
      36. ConfigListScreen.__init__(self, self.list, session = session, on_change = self.changedEntry )
      37. self.onLayoutFinish.append(self.onLayout)
      38. print "[XTEST] /xtest_config"
      39. except:
      40. print "[XTEST] ERROR", sys.exc_info()[0],sys.exc_info()[1]
      41. traceback.print_exc()
      42. def keyCancel(self):
      43. try:
      44. for x in self["config"].list:
      45. if len(x)>1:
      46. x[1].cancel()
      47. self.close()
      48. except:
      49. print "[XTEST] ERROR", sys.exc_info()[0],sys.exc_info()[1]
      50. traceback.print_exc()
      51. def onLayout(self):
      52. try:
      53. self.setTitle("Überschrift")
      54. self["config"].setCurrentIndex(5)
      55. except:
      56. print "[XTEST] ERROR", sys.exc_info()[0],sys.exc_info()[1]
      57. traceback.print_exc()
      58. def createsetup(self):
      59. try:
      60. index=len(self.list)-1
      61. while index>=0:
      62. del self.list[index]
      63. index-=1
      64. self.list.append(getConfigListEntry(_(" (Infotext)")))
      65. self.list.append(getConfigListEntry(_(" ")))
      66. self.list.append(getConfigListEntry(_("Eintrag 1"),config.plugins.xtest.e1))
      67. self.list.append(getConfigListEntry(_("Eintrag 2"),config.plugins.xtest.onoff))
      68. if config.plugins.xtest.onoff.value == "on":
      69. self.list.append(getConfigListEntry(_(" Eintrag 2"),config.plugins.xtest.e2))
      70. self.list.append(getConfigListEntry(_("Eintrag 3"),config.plugins.xtest.e3))
      71. self.list.append(getConfigListEntry(_("OK drücken"),config.plugins.xtest.none))
      72. self.list.append(getConfigListEntry(_("Eintrag 4"),config.plugins.xtest.e4))
      73. except:
      74. print "[XTEST] ERROR", sys.exc_info()[0],sys.exc_info()[1]
      75. traceback.print_exc()
      76. def changedEntry(self):
      77. try:
      78. print "[XTEST] changedEntry"
      79. self.createsetup()
      80. cur = self["config"].getCurrent()
      81. self["config"].setList(self.list)
      82. if cur and cur is not None:
      83. self["config"].updateConfigListView(cur)
      84. except:
      85. print "[XTEST] ERROR", sys.exc_info()[0],sys.exc_info()[1]
      86. traceback.print_exc()
      87. def ok(self):
      88. try:
      89. if self['config'].getCurrent()[0] == "OK drücken":
      90. self.session.open(MessageBox, _("OK gedrückt\n\nDieses Fenster schließt automatich..."), MessageBox.TYPE_INFO, timeout = 10)
      91. else:
      92. for x in self["config"].list:
      93. if len(x)>1:
      94. print "[XTEST] Save: " + str(x[0]) + "=" + str(x[1].value)
      95. x[1].save()
      96. self.close()
      97. except:
      98. print "[XTEST] ERROR", sys.exc_info()[0],sys.exc_info()[1]
      99. traceback.print_exc()
      100. def main(session, **kwargs):
      101. try:
      102. session.open(xtest_config)
      103. except:
      104. print "[XTEST] ERROR", sys.exc_info()[0],sys.exc_info()[1]
      105. traceback.print_exc()
      106. def Plugins(path,**kwargs):
      107. list = []
      108. list.append(PluginDescriptor(name="XTEST", description=_("XTEST"), where = PluginDescriptor.WHERE_PLUGINMENU, fnc=main))
      109. return list
      Alles anzeigen
      Rechtschreibfehler sind beabsichtigt, sie fördern ein genaueres Lesen
      Debug Log aktivieren Putty Telnet Screenshots erstellen
    • Hallo hajeku123,

      wie kann ich hier den Wert

      config.plugins.xtest.e3 = ConfigInteger(default = 1, limits = (1, 999))

      in der MessageBox anzeigen?

      self.session.open(MessageBox, _("OK gedrückt %s \n\nDieses Fenster schließt automatich...%s ") % (self.xtest.e3) , MessageBox.TYPE_INFO, timeout = 10)

      oder wie komme ich an den Wert ran?

      PiT
    • self.session.open(MessageBox, _("OK gedrückt \n\nDieses Fenster
      schließt automatich..." + str(config.plugins.xtest.e3.value)) , MessageBox.TYPE_INFO,
      timeout = config.plugins.xtest.e3.value)
      Rechtschreibfehler sind beabsichtigt, sie fördern ein genaueres Lesen
      Debug Log aktivieren Putty Telnet Screenshots erstellen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von hajeku123 ()