2013-05-08 12 views
0

我正在使用像這樣的Gio monitor_file。我使用Gio GFile monitor_file錯誤嗎?

def callback(*args): 
    print 'ok' 

gio_pointer = Gio.File.new_for_path(os.environ['HOME']+'/temp') 
monitor = gio_pointer.monitor_file(Gio.FileMonitorFlags.NONE, None) 
monitor.connect("changed", callback) 

修改後的文件沒有任何反應。 Gio適用於其他文件操作,如創建,讀取和寫入。

我用錯了,還是這可能是系統問題?

我的環境:Gtk圖形,Python,Linux Ubuntu 12.10,普通PC。

回答

0

它可能會失敗,因爲要使信號正常工作,需要使用gobject的主循環。

下完整的例子對我的作品:

import os 
from gi.repository import Gtk, Gio 

# This allows Ctrl+C to exit the program 
import signal 
signal.signal(signal.SIGINT, signal.SIG_DFL) 

def callback(m, f, o, event): 
    # Without this check, multiple 'ok's will be printed for each file change 
    if event == Gio.FileMonitorEvent.CHANGES_DONE_HINT: 
     print ('ok') 

gio_file = Gio.File.new_for_path(os.environ['HOME']+'/temp') 
monitor = gio_file.monitor_file(Gio.FileMonitorFlags.NONE, None) 
monitor.connect("changed", callback) 

Gtk.main()