簡體   English   中英

PyGObject Gtk.TreeView中的微調器不會旋轉

[英]Spinner in a PyGObject Gtk.TreeView does not spin

目前尚不清楚,我如何使用Gtk.SpinnerCellRendererGtk.TreeViewGtk.ListStore為模型。

在此示例中,顯示了微調器,但它不處於活動狀態 它不會旋轉。

#!/usr/bin/env python3
import random
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

class TreeView(Gtk.TreeView):
    def __init__(self):
        # model
        self.model = Gtk.ListStore.new([bool, int])
        for i in range(5):
            self.model.append([random.choice([True, True, False]), i])

        # view
        Gtk.TreeView.__init__(self, self.model)

        # column bool (as spinner)
        self.spinner_renderer = Gtk.CellRendererSpinner.new()
        col_bool = Gtk.TreeViewColumn('bool',
                                      self.spinner_renderer,
                                      active=0)
        self.append_column(col_bool)

        # column int
        col_int = Gtk.TreeViewColumn('int',
                                     Gtk.CellRendererText(),
                                     text=1)
        self.append_column(col_int)


class Window(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self, title='Mein Gtk-Fenster')
        self.set_default_size(100, 120)

        self.view = TreeView()
        self.add(self.view)

        self.connect('destroy', Gtk.main_quit)
        self.show_all()

if __name__ == '__main__':
    win = Window()
    Gtk.main()
#!/usr/bin/env python3
import random
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
from gi.repository import GObject

class TreeView(Gtk.TreeView):
    def __init__(self):
        # model
        self.model = Gtk.ListStore.new([bool, int])
        for i in range(5):
            self.model.append([random.choice([True, True, False]), i])

        # view
        Gtk.TreeView.__init__(self, self.model)

        # column bool (as spinner)
        self.spinner_renderer = Gtk.CellRendererSpinner()
        col_bool = Gtk.TreeViewColumn('bool', self.spinner_renderer, active=0)
        self.append_column(col_bool)

        # column int
        col_int = Gtk.TreeViewColumn('int', Gtk.CellRendererText(), text=1)
        self.append_column(col_int)

    def on_spinner_pulse(self):
        for row in self.model:
            if row[0]:
                if row[1] == 150:
                    row[1] = 0
                else:
                    row[1] += 1
        self.spinner_renderer.set_property("pulse", row[1])
        return True

class Window(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self, title='CellRendererSpinner')
        self.set_default_size(200, 400)

        self.view = TreeView()
        self.add(self.view)

        self.connect('destroy', Gtk.main_quit)
        self.show_all()

if __name__ == '__main__':
    win = Window()
    GObject.timeout_add(100, win.view.on_spinner_pulse)
Gtk.main()

定期增加Gtk.CellRendererSpinner:pulse屬性

  1. 通過在方法中調用self.spinner_renderer.set_property("pulse", newValue)來增加cellrendererspinner的“脈沖”值

  2. 使用GObject.timeout_add(milliseconds, method)函數重復調用該方法

文檔

要在單元格中開始動畫,請將Gtk.CellRendererSpinner:active屬性設置為True,並定期增加Gtk.CellRendererSpinner:pulse屬性。 設置每個單元格的單元格渲染器屬性的常用方法是使用Gtk.TreeViewColumn.add_attribute()將它們綁定到樹模型中的列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM