您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用Gtk.events_pending显示正在加载的GtkTreeview

使用Gtk.events_pending显示正在加载的GtkTreeview

以下是MCVE供参考:

#!/usr/bin/env python

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GLib
import os, sys


class GUI (Gtk.Window):
    def __init__(self):

        Gtk.Window.__init__(self, title = "events_pending example")
        @R_538_2419@ = Gtk.@R_538_2419@(orientation = Gtk.Orientation.VERTICAL)
        self.add(@R_538_2419@)
        sw = Gtk.ScrolledWindow()
        @R_538_2419@.pack_start(sw, True, True, 0)
        p_bar = Gtk.ProgressBar()
        @R_538_2419@.pack_start(p_bar, False, False, 0)
        model = Gtk.ListStore(int)
        view = Gtk.TreeView(model = model)
        sw.add(view)
        renderer = Gtk.CellRendererText()
        column = Gtk.TreeViewColumn("Numbers", renderer, text=0)
        view.append_column(column)
        self.show_all()
        self.set_size_request(300, 300)
        self.connect("destroy", self.on_window_destroy)
        GLib.timeout_add(1000, self.add_numbers, model, p_bar)

    def add_numbers (self, treemodel, p_bar):
        for i in range(10000):
            treemodel.append([i])
            if i != 0: #do not divide by zero
                i = float(i) # convert variable to float first!
                p_bar.set_fraction(i/9999) 
            while Gtk.events_pending():
                Gtk.main_iteration()

    def on_window_destroy(self, window):
        Gtk.main_quit()

def main():
    app = GUI()
    Gtk.main()

if __name__ == "__main__":
    sys.exit(main())
其他 2022/1/1 18:41:47 有234人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶