Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在单独进程中运行循环时,继续向gtkliststore添加行_Python_Listview_Pygtk - Fatal编程技术网

Python 在单独进程中运行循环时,继续向gtkliststore添加行

Python 在单独进程中运行循环时,继续向gtkliststore添加行,python,listview,pygtk,Python,Listview,Pygtk,其思想是继续对列表进行迭代,将其项添加到gtklist存储, 我使用: multiprocess.Process在分离流流程中添加行 gtk.gdk.threads\u enter(),在调用main方法和进程之前 错误描述是:尽管循环在后台运行良好,但没有向liststore添加任何行 有人能提出或指出解决方案吗 这里是init方法,循环方法(名为list\u updater) 以下是我在原始代码中用来解决此问题的项目: 多线程不同于多处理,我已转向线程处理 gtk.gdk.threads_

其思想是继续对列表进行迭代,将其项添加到gtklist存储, 我使用:

  • multiprocess.Process
    在分离流流程中添加行
  • gtk.gdk.threads\u enter()
    ,在调用main方法和进程之前
  • 错误描述是:尽管循环在后台运行良好,但没有向liststore添加任何行

    有人能提出或指出解决方案吗

    这里是init方法,循环方法(名为list\u updater)


    以下是我在原始代码中用来解决此问题的项目:

    多线程不同于多处理,我已转向线程处理

    gtk.gdk.threads_init(),gtk.gdk.thread.enter(),然后调用主循环gtk.gdk.thread.leave()

    'class sample():
    
        def __init__(self , testmode ):
    
            self.builder = gtk.Builder()
            self.builder.add_from_file('test.glade')
            self.list_store = self.builder .get_object('liststore1')
            self.win = self.builder.get_object('window1')
            self.win.set_default_size(200 , 400)
            self.win.show()
            self.list_ = [0,31,2,5,4,61,8,20,10]
    
            gtk.gdk.threads_enter()
            tar = self.list_updater
            arg = ()
            t = Process(target = tar , args = arg )
            t.start()
            gtk.gdk.threads_leave()
    
    
       def list_updater(self ):
           while True :                
                for item in self.list_  :
                    item = [item]
                    print item 
                    self.list_store.prepend(item)
                    time.sleep(1) 
    
    import threading   # instead of multiprocessing
    
    gtk.gdk.threads_enter()
    tar = self.list_updater
    arg = ()
    t = threading.Thread(target = tar , args = arg )
    t.start()
    gtk.gdk.threads_leave()
    
    def main():
        gtk.gdk.threads_init()
        gtk.gdk.threads_enter()
        gtk.main()
        gtk.gdk.threads_leave()