我正在为python3和GTK3中的Kodi编写一个非常简单轻巧的遥控器。我已经能够添加随着播放进度而更新的进度条,但我希望能够点击进度条的特定部分并寻找相应的视频部分。
有人可以帮助我,或者至少给我一点方向如何实现它?现在我正在使用百分比,因为它比使用时间更简单。
我现在唯一需要的是当我点击进度条的1/3(显然在进度条的整个长度上)时,输出为0.33
我想我必须错过一些非常简单的东西,但我找不到它是什么。我找到了一个使用EventBox的例子,但它只通知了一个鼠标移动手势,并且无法给出具体的数字。
答案 0 :(得分:0)
最简单的解决方案可能是切换到Gtk.Scale
,因为它已经支持您需要的一切。在更改时打印它的简单比例看起来像这样(在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()
答案 1 :(得分:0)
最后,我想出了python3和GTK3的答案。
我在这里发布了整个代码:https://github.com/elpraga/kodi-cli 我将在此发布相关位:
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)
...