Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQt5 QFileDialog在ubuntu中未返回正确的路径_Python_Linux_Ubuntu_Pycharm_Pyqt5 - Fatal编程技术网

Python PyQt5 QFileDialog在ubuntu中未返回正确的路径

Python PyQt5 QFileDialog在ubuntu中未返回正确的路径,python,linux,ubuntu,pycharm,pyqt5,Python,Linux,Ubuntu,Pycharm,Pyqt5,我用这段代码打开一个文件对话框并返回所选的文件名(PyQt5,Ubuntu) qtwidts.QFileDialog.getOpenFileNames(self,“打开文件”,self.\uu目标,self.\uu打开文件) 但不是得到这个列表: ['/home/python/Downloads/addresses.csv','/home/python/Downloads/airtravel.csv'] 我得到以下清单: ['/run/user/1000/doc/9f194012/addre

我用这段代码打开一个文件对话框并返回所选的文件名(PyQt5,Ubuntu)

qtwidts.QFileDialog.getOpenFileNames(self,“打开文件”,self.\uu目标,self.\uu打开文件)
但不是得到这个列表:

['/home/python/Downloads/addresses.csv','/home/python/Downloads/airtravel.csv']
我得到以下清单:

['/run/user/1000/doc/9f194012/addresses.csv','/run/user/1000/doc/885466d0/airtravel.csv']
这是我的密码:

导入操作系统
导入系统
从mods导入fixqt
从PyQt5导入QtWidgets
从PyQt5.QtGui导入QIcon
从mods.csvdata导入数据csv
从mods.err_报告导入报告_错误
从mods.save_xl导入save_excel_文件
从ui.main窗口导入ui_mwWCS
#这是自我的价值
home=os.path.expanduser(“~/Desktop”)
icon_path=os.path.join(os.path.join(os.path.dirname(os.path.realpath(_文件__)),“ui”),“icon.ico”)
打开_filter=“CSV文件(*.CSV)”
保存\u filter=“Excel工作簿(*.xlsx)”
输入数据=数据CSV([])
类MainWindow(qtwidts.QMainWindow):#window=qtw.QMainWindow()
定义(self,title=“”,mw\u home=“”,op\u filter=“所有文件(**)”,sv\u filter=“所有文件(**)”,parent=None):
super()。\uuuu init\uuuu(父级)
self.\uu title=标题
self.ui=ui_mwWCS()
self.ui.setupUi(self)
自身目标=mw\U home
自开滤波器
self.\uuu save\u f=sv\u过滤器
self.\uuu excel\u file=“”
self.setWindowIcon(图标路径))
self.\uuu input\u data=DataCSV([])
定义显示对话框(自我):
返回QtWidgets.QFileDialog.GetOpenFileName(self,“打开文件”,self.\uu目标,self.\uu打开文件)
定义设置csv(自我,lst):
自。\输入\数据。设置\文件\列表(lst)
#打印(lst)
self.\u输入\u数据。打开\u csv\u文件()
self.\u输入\u数据。异常\u条目()
self.\输入\数据。设置\框\编号()
自。\输入\数据。设置\板材\编号()
单击添加时的def(自身):
尝试:
列出名称,显示对话框()
self.ui.lstInput.addItems(列表名称)
self.\uuu set\u csv(列出名称)
例外情况除外,如e:
报告错误(“发生错误(添加)”,e)
你能帮我找到合适的文件名吗

更新: 在终端中尝试我的代码效果很好,这可能是与pyCharm相关的问题吗


@musicamante,谢谢你的帮助。如果我使用PyCharm运行代码,那么答案取决于DontUseNativeDialog。在PyCharm之外运行它,不需要该标志。

同样的问题也发生在我身上,最后我发现curprit就是PyCharm(在我的例子中),
尝试在终端中运行您的代码,您将看到它工作正常。在snap打包应用程序后,它也将平稳运行。所以现在这对我来说不是问题。

我正在使用PyCharm,我也遇到了同样的问题。@musicamante建议的选项“DontUseNativeDialog”也为我解决了这个问题

QtWidgets.QFileDialog.getOpenFileName(parent=self, options=QtWidgets.QFileDialog.DontUseNativeDialog)

您必须将代码发布给其他人以帮助您。我只使用过Ubuntu几次,但我认为Qt使用的是“本机”文件对话框,其内容由Ubuntu提供(如Unity/Gtk),它可能会为下载创建一个“虚拟”文件夹,它们实际存储在
/run/user//doc/
中,或者使用
~/Downloads
路径作为虚拟文件夹,通过符号链接链接到实际文件。如果是这样的话,这里奇怪的是,默认情况下QFileDialog应该遵循符号链接。我建议您尝试创建一个正常的QFileDialog(无静态函数),将
DontUseNativeDialog
标志设置为True,以查看文件路径;另外,最好在相同文件的两个文件路径上执行
ls-l
(那些在
/run
中运行的文件和它们在
~/Downloads
中的对应文件),以查看它们是实际文件还是符号链接;请注意,它们甚至可能是硬链接(但我对此表示怀疑),在这种情况下,权限后面的数字表示引用计数,您可以使用
ls-I
检查inode编号是否匹配。这就是说,它也可能是一个保险丝“黑客”…完美,这正是我所需要的。