使用http://pygtk.org/pygtk2tutorial/examples/filelisting.py如何检测文件名上的点击并对其执行某些操作(例如在标准输出上打印此文件名)?
文件在这里:
def make_list(self, dname=None):
if not dname:
self.dirname = os.path.expanduser('~')
else:
self.dirname = os.path.abspath(dname)
self.window.set_title("Nitpicker : " + self.dirname)
files = [f for f in os.listdir(self.dirname) if f[0] <> '.']
files.sort()
files = ['..'] + files
listmodel = gtk.ListStore(object)
for f in files:
listmodel.append([f])
return listmodel
在最后一个for循环中,我可以将事件附加到 f ,触发像
这样的函数subprocess.call(["play", file])
但我怎么能这样做?如何在pyGTK中处理点击?
答案 0 :(得分:1)
好的,我发现了:
def open_file(self, treeview, path, column):
model = treeview.get_model()
iter = model.get_iter(path)
filename = os.path.join(self.dirname, model.get_value(iter, 0))
filestat = os.stat(filename)
# print filename
if stat.S_ISDIR(filestat.st_mode):
new_model = self.make_list(filename)
treeview.set_model(new_model)
else:
print filename + "is a file!!"
return