gtk.FileChooserDialog.get_current_folder()的奇怪行为

时间:2012-03-02 14:12:57

标签: python gtk

我现在有一个非常奇怪的问题,我希望你能够重现它。请尝试以下Python代码:

import gtk


print '=== 1 ==='

def _createFileDialog():
    dialog = gtk.FileChooserDialog()
    print dialog.get_current_folder(), '***'
    dialog.set_current_folder('/home/')
    print dialog.get_current_folder(), '###'

dialog = _createFileDialog()


print '=== 2 ==='

dialog = gtk.FileChooserDialog()
print dialog.get_current_folder(), '***'
dialog.set_current_folder('/home/')
print dialog.get_current_folder(), '###'

正如您所看到的,代码部分基本相同,因此您可能会得到相同的结果。但是,在第一部分中,以'###'结尾的行打印'None ###',而第二部分正确打印'/ home ###'。 我在我的同事的两台不同的计算机上重新尝试了这个,并且在一台计算机上这是可重复的。有人知道问题可能是什么吗?

提前致以亲切的问候和感谢 克里斯

1 个答案:

答案 0 :(得分:2)

在这两种情况下也可以打印“无###”。

set_current_folder的调用似乎是异步的,如果让GTK在调用get_current_folder之前处理挂起事件,它会按预期工作:

dialog = gtk.FileChooserDialog()
print dialog.get_current_folder(), '***'
dialog.set_current_folder('/home/')

while gtk.events_pending():
    gtk.main_iteration()

print dialog.get_current_folder(), '###'