我现在有一个非常奇怪的问题,我希望你能够重现它。请尝试以下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 ###'。 我在我的同事的两台不同的计算机上重新尝试了这个,并且在一台计算机上这是可重复的。有人知道问题可能是什么吗?
提前致以亲切的问候和感谢 克里斯
答案 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(), '###'