У меня проблема с gtk.FileChooserButton в скрипте Python. Если вы выберете опцию ›Другое ...‹ в меню кнопок, откроется диалоговое окно gtk.FileChooserDialog, где вы сможете выбрать новую папку. Если я выберу эту новую папку, дважды щелкнув ее, и подтвержу диалоговое окно, нажав «Открыть», имя выбранной папки отобразится в gtk.FileChooserButton, а значение gtk.FileChooserButton.get_current_folder() изменится на путь к выбранной папке. папка (как вы можете видеть в строке состояния примера). Это ожидаемое поведение.
Но когда я выбираю новую папку не двойным щелчком, а только одним щелчком, и подтверждаю диалог, нажав «Открыть», имя выбранной папки отображается в 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()