GtkFileChooserButton O modo 'Selecionar Pasta' não retorna nenhum caminho

3

Eu adicionei um GtkFileChooserButton ao meu aplicativo via Glade. Está definido para o modo de seleção de pasta. Quando o widget é clicado, ele mostra uma lista suspensa de marcadores do Nautilus com uma opção 'outro' no final. Um novo diálogo do seletor de arquivos é iniciado quando o 'outro' é clicado. O botão não está conectado a nenhum outro diálogo do seletor de arquivos personalizado.

O sinal de conexão que estou usando é 'file-set' e estou recuperando o caminho completo da pasta selecionada pelo usuário usando Gtk.FileChooser.get_current_folder ().

Esta configuração funciona bem se o usuário selecionar uma pasta da opção 'outro'. Mas se um usuário selecionar um marcador da lista suspensa, nenhum caminho será retornado. Como resolver isso?

Existe uma maneira de desabilitar esta lista suspensa e ir diretamente para o diálogo filechooser? Eu quero usar o GtkFileChooserButton apenas para que o usuário possa obter uma prévia da sua pasta selecionada.

    
por user8592 04.07.2012 / 09:49

4 respostas

2

Como o sinal do conjunto de arquivos é enviado somente quando o usuário altera o arquivo, você precisará fazer a chamada get_current_folder () quando precisar saber o caminho, e não quando o arquivo o sinal de configuração é chamado. A partir da documentação , não vejo como obter uma notificação quando o usuário seleciona um caminho dos marcadores, no modo de seleção de pastas.

Como alternativa, você pode usar o FileChooserButton no modo normal e simplesmente usar get_current_folder quando o sinal file-set for enviado. Isso deve fornecer o diretório em que o usuário está, quando um arquivo é selecionado. Infelizmente, a interface do usuário também parecerá estranha nesse caso, já que o botão mostrará o nome do arquivo, enquanto você está realmente usando o diretório.

Além disso, você provavelmente deve enviar um bug contra o GTK + upstream sobre este caso de uso e como ele não é utilizável. O sinal do conjunto de arquivos realmente deve ser preterido e renomeado para path-set e usado em ambos os modos.

    
por dobey 06.07.2012 / 15:49
2

Eu usei o sinal current_folder_changed herdado de GtkFileChooser e parece funcionar mesmo com os favoritos.

    
por Mark 07.09.2012 / 23:50
1

GtkFileChooserButton no modo de seleção de pasta pode retornar o URI da pasta. Use o módulo urlparse para converter o URI em caminho. Isso funciona mesmo com marcadores. Espero que isso resolva seu problema.

import urlparse

folder_uri = filechooserbutton_meas.get_uri()
folder = urlparse.urlparse(folder_uri).path 
    
por Manu Varkey 17.04.2015 / 09:22
0
  

Esta configuração funciona bem se o usuário selecionar uma pasta da opção 'outro'. Mas se um usuário selecionar um marcador da lista suspensa, nenhum caminho será retornado. Como resolver isso?

Com o GtkFileChooserButton, o modo 'seleção de pastas'. O código a seguir é bom o suficiente:

def on_mybutton_selection_changed(self, w):
   print "selected folder: ", w.get_file().get_path()

Obtemos o caminho do diretório em todas as seleções do menu suspenso, até mesmo os favoritos.

  

Eu usei o sinal current_folder_changed herdado do GtkFileChooser e parece funcionar mesmo com os marcadores.

Cuidado com w.get_current_folder (). Ele retorna a pasta LAST selecionada quando o usuário escolheu uma pasta da opção "outro", não a pasta selecionada no menu suspenso.

    
por Freerbill 24.10.2013 / 13:23