2016-05-27 7 views
1

Ich schreibe eine sehr einfache und leichte Fernbedienung für Kodi in Python3 und GTK3. Ich konnte bereits den Fortschrittsbalken hinzufügen, der mit fortschreitender Wiedergabe aktualisiert wird, aber ich möchte in der Lage sein, auf einen bestimmten Teil des Fortschrittsbalkens zu klicken und den entsprechenden Teil des Videos zu suchen.Wie kann ich einen entsprechenden Prozentsatz erhalten, wenn Fortschrittsbalken geklickt wird python3 gtk3

Kann mir bitte jemand helfen oder mich wenigstens ein bisschen orientieren, wie kann ich das erreichen? Momentan arbeite ich mit Prozent, da es viel einfacher ist als mit der Zeit zu arbeiten.

Das einzige, was ich jetzt brauche, ist 0,33 als Ausgabe zu erhalten, wenn ich auf 1/3 der Statusleiste klicken (natürlich auf der gesamten Länge des Fortschrittsbalkens entsprechend)

Ich denke, ich muß sein etwas sehr einfaches vermissen, aber ich kann nicht finden, was es ist. Ich fand ein Beispiel für die Verwendung von EventBox, aber es informierte nur über eine Mausbewegungsgeste und konnte die spezifische Nummer nicht angeben.

Antwort

0

Schließlich kam ich mit einer Antwort für python3 und GTK3 auf.

posted ich den ganzen Code hier: https://github.com/elpraga/kodi-cli Ich werde die entsprechenden Bits hier posten:

import gi 
gi.require_version('Gtk', '3.0') 
from gi.repository import Gtk, GObject 
import subprocess 

...

self.progressbar = Gtk.ProgressBar(text="Kodi is not playing at the moment") 
    self.progresseventbox = Gtk.EventBox() 
    self.progressbar.set_show_text(True) 

...

grid.attach(self.youtube_entry, 0, 0, 4, 1) 
    grid.attach_next_to(self.progresseventbox, self.youtube_entry, Gtk.PositionType.BOTTOM, 4, 1) 
    self.progresseventbox.add(self.progressbar) 

..

self.progresseventbox.connect("button-press-event", self.on_mouse_click) 

...

def on_mouse_click(self, widget, event): 
    width = self.progresseventbox.get_allocated_width() 
    percentage = event.x/width * 100 
    percentage = str(percentage) 
    output = (subprocess.check_output(["kodi-cli", "-g", percentage])) 
    # Let's get some response from kodi-cli 
    output = (subprocess.check_output(["kodi-cli", "-g"])) 
    output = output.decode('ascii') 
    # http://stackoverflow.com/questions/1798465/python-remove-last-3-characters-of-a-string 
    self.output_text.set_text(output) 

...

Screenshot of the clickable progress bar I used after all

0

Die einfachste Lösung ist wahrscheinlich, auf die Gtk.Scale zu wechseln, weil es bereits alles unterstützt, was Sie brauchen. Eine einfache Skala, die es auf Änderung druckt schätzen würde wie folgt aussehen (in Python 2.7):

class GtkWindow(Gtk.Window): 

    def __init__(self): 
     Gtk.Window.__init__(self, title="Dialog Example") 

     min_val = 0.0 
     max_val = 100.0 
     adjustment = Gtk.Adjustment.new(0.0, min_val, max_val, 1.0, 10.0, 10.0) 
     scale = Gtk.Scale.new(Gtk.Orientation.HORIZONTAL, adjustment) 
     scale.connect("value-changed", self.on_value_changed) 
     self.add(scale) 

    def on_value_changed(self, scale): 
     print scale.get_value() 

win = GtkWindow() 
win.connect("delete-event", Gtk.main_quit) 
win.show_all() 
Gtk.main() 
Verwandte Themen