Plugin mit scrollbar

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

    • Plugin mit scrollbar

      Hi, wenn ich in der Senderliste hoch und runter navigiere, dann kommt immer die EPG-Vorschau des jeweiligen Senders, ohne dass ich noch extra ok oder sonst was drücke.

      Wenn ich mir ein Plugin baue, möchte ich das auch realisieren. Geht das?
      Weder mit Label, noch mit MenuList etc. funktioniert das.
      Also so zu sagen, dass beim navigieren (wie bei der Senderliste) soll das Element ...setText(x) neu bestückt werden.

      Was hat es mit scrollbarMode="showOnDemand" und scrollbarMode="showNever" auf sich?
      Gruß
    • Mit scrollbarMode wird der Balken Funktion bestimmt:

      scrollbarMode="showOnDemand" = Wird angezeigt wen verfügbar
      scrollbarMode="showNever" = Deaktiviert
      scrollbarMode="showAlways" = Wird immer angezeigt

      1_0_19_6F_D_85_C00000_0_0_0 (2).jpg
    • Wenn ich das richtig verstehe, möchte @Satfan444 eine Callback-Aktion, wenn er sich in einer Liste rauf oder runter bewegt.

      Und da sollte man sich - wenn man nicht gleich einen Renderer wie die Listbox erweitern möchte - einfach reinhängen können. Der Listbox-Renderer z.B. gibt das selectionChanged-Event an seine source weiter.
      Diskutiere nie mit einem Idioten. Er zieht dich auf sein Niveau runter und schlägt dich mit seiner Erfahrung.
    • Wenn ich in der Kanalliste bin, wird beim hoch/runter schalten die Programmvorschau angezeigt rechts unten (ich weiss kommt auf den Skin an).
      Ich habe z.b. ARD laufen, schalte in die Kanalliste, dann gehe ich runter auf ZDF und es wird die Vorschau von ZDF angezeigt ohne das ich ok drücke.

      So etwas suche ich im Plugin, wenn ich z.b. "MenuList" habe von 1 bis 5 und navigiere von 1 auf 3 möchte ich ein Text angezeigt bekommen (bzw. eine Methode aufrufen) ohne das ich ok drücke.
    • @rdamas ja genau so etwas suche ich wie "Listbox-Renderer". wie verwende ich diesen?

      @Bueb Ja ich möchte ein Plugin erstellen, mit einer Liste wo bei beim navigieren eine Callback-Aktion auslöst.
      Wenn ich z.B. von 1 auf 2 navigiere möchte ich ein callback für 2 auslösen lassen.

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

    • Das steht doch schon alles da; ausserdem gibt es jede Menge Plugins, die du mal durchstöbern könntest.

      Also gut - für das Listbox-Widget funktioniert sowas:

      Python-Quellcode

      1. # -*- coding: utf-8 -*-
      2. from Components.ActionMap import ActionMap
      3. from Components.Label import Label
      4. from Components.Sources.List import List
      5. from Screens.Screen import Screen
      6. class Info(Screen):
      7. skin="""
      8. <screen name="Info" position="0,0" size="1920,1080" title="Test" flags="wfNoBorder">
      9. <widget render="Listbox" source="list_source" enableWrapAround="0"
      10. position="0,100" size="1000,800" transparent="1"
      11. font="Regular;25" zPosition="5" scrollbarMode="showOnDemand"
      12. scrollbarSliderBorderWidth="0" scrollbarWidth="5">
      13. <convert type="TemplatedMultiContent">{
      14. "template": [
      15. MultiContentEntryText(
      16. pos = (30, 10),
      17. size = (1800, 50),
      18. font = 0,
      19. flags = RT_HALIGN_LEFT | RT_VALIGN_CENTER,
      20. text = 0),
      21. ],
      22. "fonts": [gFont("Regular", 36)],
      23. "itemHeight": 50 }
      24. </convert>
      25. </widget>
      26. <widget name="label" position="1200,100" size="600,50" font="Regular;36" />
      27. </screen>
      28. """
      29. def __init__(self, session):
      30. self.session = session
      31. Screen.__init__(self, session)
      32. self['actions'] = ActionMap(['WizardActions'], {
      33. 'back': self.close,
      34. }, -1)
      35. self['list_source'] = List()
      36. self['label'] = Label()
      37. self.onLayoutFinish.append(self.populate)
      38. def populate(self):
      39. f = open('/etc/passwd', 'r')
      40. mylist = []
      41. for line in f:
      42. if len(line):
      43. mylist.append( (line,) )
      44. self['list_source'].setList(mylist)
      45. self['list_source'].onSelectionChanged.append(self.selectionChanged)
      46. def selectionChanged(self):
      47. what = str(self['list_source'].getIndex())
      48. self['label'].setText(what)
      Alles anzeigen
      PS: Erwarte nicht, dass dir jemand auf Zuruf dein Plugin häppchenweise fertig baut - Eigeninitiative wird schon gerne gesehen ^^
      Diskutiere nie mit einem Idioten. Er zieht dich auf sein Niveau runter und schlägt dich mit seiner Erfahrung.
    • Ich habe es getestet und es funktioniert.
      Mit "self['list_source'].getCurrent()" wird auch die aktuelle Auswahl angezeigt.

      Ich habe mich schon in mehreren Plugins umgesehen, leider wusste ich nicht, was man dazu alles braucht
      wie z.b.
      self.onLayoutFinish.append(x)
      ebenso wie "template": [
      MultiContentEntryText(
      pos = (30, 10),
      size = (1800, 50),
      font = 0,
      flags = RT_HALIGN_LEFT | RT_VALIGN_CENTER,
      text = 0),
      .
      .
      .
      war mir bisschen fremd.
      Vielen dank.
    • Wenn ich aber hoch und runter schalte, überspringt es immer 10.

      Python-Quellcode

      1. self["myActionMap"] = ActionMap(["SetupActions", "KeyboardInputActions","ListboxActions"],{"cancel": self.close,"pageDown":self["list_source"].pageDownpage})
      Liegt das an der keymap oder an der liste?