我正在使用 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,然后在预览并选择文件后,复制其路径,然后将其粘贴到主窗口。