我在 Python 脚本中遇到了 gtk.FileChooserButton 的问题。如果您从按钮菜单中选择选项 ›Other ...‹,则会打开 gtk.FileChooserDialog,您可以在其中选择一个新文件夹。如果我通过双击选择这个新文件夹并通过单击 ›Open‹ 确认对话框,则所选文件夹名称显示在 gtk.FileChooserButton 中,并且 gtk.FileChooserButton.get_current_folder() 的值更改为所选文件夹的路径文件夹(您可以在示例的状态栏中看到)。这是预期的行为。
但是当我不是通过双击而是通过单击来选择新文件夹并通过单击 ›Open‹ 确认对话框时,所选文件夹名称显示在 gtk.FileChooserButton 中,但路径显示在 gtk.FileChooserButton.get_current_folder () 不是所选文件夹的路径,而是其父文件夹的路径。
这是一个错误还是我的脚本中有错误?按钮上的文件夹名称应始终与 gtk.FileChooserButton.get_current_folder() 的名称相同。在这里可以做什么?谢谢。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import gtk, os
class MainClass(object):
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_position(gtk.WIN_POS_CENTER)
self.window.set_default_size(400, 100)
self.window.connect("delete_event", self.delete_event)
self.window.connect("destroy", self.destroy)
self.window.set_border_width(6)
self.vbox1 = gtk.VBox(False, 0)
self.window.add(self.vbox1)
self.filechooserdialog1 = gtk.FileChooserDialog("Select a folder…", None, gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK))
self.filechooserdialog1.set_default_response(gtk.RESPONSE_OK)
self.filechooserbutton1 = gtk.FileChooserButton(self.filechooserdialog1)
self.filechooserbutton1.set_current_folder(os.environ['HOME'])
self.filechooserbutton1.connect('current-folder-changed', self.tell_folder)
self.vbox1.pack_start(self.filechooserbutton1, True, False, 0)
self.statusbar1 = gtk.Statusbar()
self.vbox1.pack_start(self.statusbar1, False, False, 0)
self.context_id = self.statusbar1.get_context_id("status")
self.window.show_all()
def tell_folder(self, data=None):
self.statusbar1.push(self.context_id, self.filechooserbutton1.get_current_folder())
def delete_event(self, widget, event, data=None):
return False
def destroy(self, data=None):
gtk.main_quit()
def main(self):
gtk.main()
if __name__ == "__main__":
MyApp = MainClass()
MyApp.main()