0

这个想法是继续迭代 list ,将其项目添加到 gtklist store ,我使用:

  1. multiprocess.Process在单独的流程中添加行
  2. gtk.gdk.threads_enter(), 在调用 main 方法之前和进程之前

错误描述是:尽管循环在后台运行良好,但没有将行添加到列表存储中。

任何人都可以建议或指出解决方案吗?

这是init方法,循环方法(命名为list_updater)

'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) 

这是完整的代码

这是林间空地文件

4

1 回答 1

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()

gtk.gdk.threads_init() , gtk.gdk.thread.enter() 在调用主循环之前, gtk.gdk.thread.leave() 在它之后

def main():
    gtk.gdk.threads_init()
    gtk.gdk.threads_enter()
    gtk.main()
    gtk.gdk.threads_leave()
于 2013-11-18T03:09:39.907 回答