我正在使用 Python 3.6 和 pyqt5 开发一个文件选择对话框。该对话框的基本思想是它可以选择在选择之前预览文件。它可以预览任何类型的注册Windows文件。该设计是使用 QtDesigner MainWindow 完成的。现在我可以从另一个 pyqt/python3 文件打开此预览文件浏览器。但是如何从该脚本中检索选定的文件名和文件路径呢?这是我打开预览浏览器文件的测试文件:

class TestBrowser(QtWidgets.QMainWindow, design.Ui_MainWindow):
    def __init__(self,browser):
        super(self.__class__, self).__init__()
        self.setupUi(self)  # This is defined in design.py file automatically
        # It sets up layout and widgets that are defined
        self.browser=browser
        self.pushButton.clicked.connect(self.dario)

    def dario(self):
        self.browser.exec_()

def main():
    app = QApplication(sys.argv)
    browser=bd.BrowserDialog()
    main=TestBrowser(browser)
    main.show()
    sys.exit(app.exec_())

if __name__ == '__main__':    # if we're running file directly and not importing it
    main()

当我陷入“如何从另一个类/函数/某些东西中移动值”时,我个人会在不同的 .py 文件上使用全局变量(出于理智的目的)。

在新的 .py 文件上:

file_name = None
file_path = None

# Save function
def save_filename(selected_file, selected_path):
    global file_name, file_path
    file_name = selected_file
    file_path = selected_path

当您选择文件时,在浏览器上添加:

mynewpyfile.save_filename(file, path)

然后从主窗口您可以获取文件数据:

self.pushTestbutton.clicked.connect(self.do_something)

def do_something(self):
    print("the selected file is" + mynewpyfile.file_path + "/" + mynewpyfile.file_name)

其他替代方案:http://doc.qt.io/qt-5/qfiledialog.html
在这种方法中,您只需添加 QlineEdit 和...虽然有限,但它不会比这更容易。

self.lineTest.setText(QtWidgets.QFileDialog.getOpenFileName()[0])

我必须这样做一次,我的愚蠢方法是将值临时存储在数据库或全局变量中。它有效,但我仅建议将其作为临时解决方案。或者你

我曾尝试使用设置中央小部件,尝试设置停靠小部件。我还看到了 python 信号和事件,但只是不知道如何做

只要你的浏览器是用 python 编写的或者允许你存储所选的文件名,你就可以使用我给你的两个答案中的任何一个。但老实说,我不明白为什么要使用浏览器而不是 Qfiledialog。毕竟,Qfiledialogs 可让您轻松预览每个文件。

当您可以在一个调用文件浏览器的脚本中完成所需的所有操作时,为什么还需要两个脚本呢?

我正在尝试预览 doc、docx、pdf、ppt、pptx、odt、odf、csv、wav、mp3、amr、aac、ogg、jpg、png、gif、tif、dat、dll、ini 等文件在选择它们之前@Saelyth。我不确定使用 QFileDialog 可以做到这一点。

谢谢。从你那里我得到了一个想法,虽然被废弃了。基本上我正在尝试预览 doc、docx、pdf、ppt、pptx、odt、odf、csv、wav、mp3、amr、aac、ogg、jpg、png、gif、tif、dat、dll、ini 等文件在选择它们之前先将其他文件放在文件对话框中。现在我打开文件浏览器 GUI,然后在预览并选择文件后,复制其路径,然后将其粘贴到主窗口。