Domanda

Sto lavorando su un progetto che sto sviluppando con Python e PyQt4. Ho inciampato su un comportamento un po 'strano del QFileDialog, che non si sta verificando durante l'esecuzione del progetto all'interno della mia IDE (Eclipse).

Il problema è che in QFileDialog ExistingFiles-mode non riescono a restituire l'elenco dei file selezionati, quando uno dei percorsi dei file è che contiene una dieresi tedesco (ä, ü, ö, etc.) Il QFileDialog non offre opzioni o parametri per rendere più sensibile per quanto riguarda questo scenario. Qualcuno ha qualche idea su come affrontare questo problema?

modifica: il mio scenario di distribuzione in cui l'errore si verifica sta cercando come il seguente. Sto costruendo un eseguibile con py2exe e poi renderlo distribuibile con Inno Setup. Non so se questo potrebbe essere stato dato alla luce il problema, ma più informazioni e meglio credo.

EDIT2:     Non ho l'esatto accessibile codice fino a venerdì, ma stiamo avendo un'istruzione if-attesa per la finestra di dialogo per compplete. in questo modo:

fileDialog = QFileDialog(...)
if fileDialog.exec_():
    # get the choosen files
    fileNames = fileDialog.getSelectedFiles()
    # test if if-statement is entered
    print fileNames
    # convert from QStringList to normal list of Strings
    fileNames = list(map(lambda x: str(x), fileNames))
    # to suffice as an example print each
    for fileName in fileNames:
        print fileName

Il primo comando di stampa venga eseguita la seconda non lo fa. Come se una via di mezzo, non è disposto a terminare e Python sta gestendo l'eccezione in qualche modo con calma. Il QFileDialog però si sta chiudendo come supposto dopo aver scelto il file e facendo clic su "Apri" o doppio clic su un file.

È stato utile?

Soluzione

  1. tenta di utilizzare lambda x: x.toUtf8 (), o toLocal8Bit () o impostare TextCodec qualsiasi tabella di codici che si desidera, dovrebbe aiutare. Questi metodi restituiscono correttamente codificati stringhe Python. Evitare l'uso di str () su QString, è a conoscenza di charmap si desidera.

  2. Ciò che è getSelectedFiles ()? Non esiste metodo in Qt 4.5 o superiore in classe QFileDialog. Ho pensato, che fosse errore di battitura o qualche vecchia versione Qt, e cambiato in selectedFiles () nel mio codice di prova.

  3. Perché non si utilizzano i metodi della convenienza dei QFileDialog per il file scelta:

    getExistingDirectory () GetOpenFileName () getOpenFileNames () GetSaveFileName ()

Altri suggerimenti

Si dovrebbe usare unicode () (non str ()) per convertire QString in Python le stringhe Unicode.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top