No Firefox, se eu baixar um arquivo, há um ícone de pasta "Mostrar na pasta":
... que, quando clicado, abre o explorador de arquivos nativo do sistema operacional no diretório Downloads, com o arquivo de download de destino selecionado:
Eu gostaria do mesmo tipo de funcionalidade - exceto que eu quero isso em um aplicativo PyQt5, quando o QFileDialog é aberto, ao escolher uma ação no menu de contexto do botão direito ativado quando o arquivo de destino é selecionado; por exemplo, com o exemplo do PyQt5 (abaixo), posso obter esta caixa de diálogo do Qt5:
... então, quando clico com o botão direito em um arquivo de destino (como test.txt
na imagem), gostaria que uma ação "Mostrar na pasta" fosse adicionada ao menu de contexto e, quando ela fosse escolhida, gostaria que o explorador de arquivos nativo fosse aberto no diretório que contém o arquivo de destino e o arquivo de destino selecionado, como o Firefox faz.
Como posso fazer isso no PyQt5?
Código de exemplo:
# started from https://pythonspot.com/pyqt5-file-dialog/
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QInputDialog, QLineEdit, QFileDialog
from PyQt5.QtGui import QIcon
class App(QWidget):
def __init__(self):
super().__init__()
self.title = 'PyQt5 file dialogs - pythonspot.com'
self.left = 10
self.top = 10
self.width = 640
self.height = 480
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
self.openFileNameDialog()
self.show()
def openFileNameDialog(self):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
fileName, _ = QFileDialog.getOpenFileName(self,"QFileDialog.getOpenFileName()", "","Text Files (*.txt)", options=options)
if fileName:
print(fileName)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())