Outra opção a considerar é o Zenity: http://freecode.com/projects/zenity .
Eu tive uma situação em que estava desenvolvendo um aplicativo de servidor Python (nenhum componente da GUI) e, portanto, não queria introduzir uma dependência em nenhum kit de ferramentas da GUI do python, mas queria que alguns dos meus scripts de depuração fossem parametrizados pelos arquivos de entrada e quisesse solicitar visualmente ao usuário um arquivo se ele não especificou um na linha de comando. Zenity foi um ajuste perfeito. Para conseguir isso, chame "zenity --file-selection" usando o módulo de subprocesso e capture o stdout. Obviamente, esta solução não é específica para Python.
O Zenity suporta várias plataformas e já estava instalado em nossos servidores de desenvolvimento, facilitando nossa depuração / desenvolvimento sem introduzir uma dependência indesejada.