Mais

QFileDialog permanece aberto após a seleção feita


Eu criei um plugin QGIS para importar um arquivo de valores separados por tabulação, usando:

filename = QFileDialog.getOpenFileName (self.dlg, "Selecionar arquivo para importar", caminho, '*. *') uri = "arquivo: ///" + filename + "?" + "delimitador =% s & xField =% s & yField =% s "% ("  t "," Set Grid Easting "," Set Grid Northing ") vlayer = QgsVectorLayer (uri," SpreadTests "," delimitedtext ") QgsMapLayerRegistry.instance (). addMapLayer (vlayer)

Funciona conforme o esperado, exceto que a caixa de diálogo para selecionar o arquivo permanece aberta após a seleção ser feita. Há algo que estou fazendo de errado? ou algo mais que eu preciso adicionar?


Você está misturando o código de função do slot com o código necessário para um resultado. Esse é o problema.

Por exemplo, criei um plugin arbitrário para 'abrir arquivos'. Próximo código cortado, em__iniciar__método, é para o botão se conectar ao slot onde está o QFileDialog:

… Def __init __ (self, iface): "" "Construtor… #QFileDialog para abrir o arquivo self.dlg.lineEdit.clear () self.dlg.pushButton.clicked.connect (self.select_open_file)…

Por convenção, a função de slot é colocada antes do método de execução:

… Def select_open_file (self): filename = QFileDialog.getOpenFileName (self.dlg, "Selecione o arquivo para importar", "", '*. *') Self.dlg.lineEdit.setText (filename) def run (self): " "" Método de execução que realiza todo o trabalho real "" "…

se resultado:

… Se resultado: # Faça algo útil aqui - exclua a linha que contém a passagem e # substitua pelo seu código. filename = self.dlg.lineEdit.text () imprimir nome do arquivo

O "algo útil aqui" é imprimir abrir arquivo mas, no seu caso, você tem que colocar o código.

uri = "arquivo: ///" + filename + "?" + "delimitador =% s & xField =% s & yField =% s"% (" t", "Definir grade leste", "Definir grade norte") vlayer = QgsVectorLayer ( uri, "SpreadTests", "delimitedtext") QgsMapLayerRegistry.instance (). addMapLayer (vlayer)

Funciona para mim como você pode ver nas próximas imagens:

Selecionando o arquivo de entrada:

Após clicar em 'Abrir', o QFileDialog foi fechado e o caminho do arquivo de forma foi adicionado ao QLineEdit:

Após clicar em OK, o nome do nome do arquivo foi impresso no console Python.


Assista o vídeo: C++ Qt 49 - QFileSystemModel a simple file explorer example (Outubro 2021).