gpt4 book ai didi

python - QFileDialog 窗口中没有可见的文件

转载 作者:太空狗 更新时间:2023-10-29 23:55:22 24 4
gpt4 key购买 nike

我正在使用 pyqt 编写一个简单的代码

在代码中,我调用了一个QFileDialog,但是当我使用静态函数调用它时一切正常,但使用正常方法即使用dialog.exec_(), 我在文件对话框窗口中没有看到任何文件。

只有在输入文件的完整路径后,我才能在文件对话框窗口中看到该文件。请注意,此问题仅在我调用 FileDialoghandler 函数时出现,如果我不这样做,无论我如何调用 QFileDialog,一切都正常。而且这个问题只出现在 Linux 上,在 Windows7 上一切正常。我想知道这是 PyQt 错误还是我在这里遗漏了什么?

代码如下:

import sys
from PyQt4.QtCore import Qt
from PyQt4.QtGui import *
from PyQt4.QtCore import QAbstractFileEngine
from PyQt4.QtCore import QAbstractFileEngineHandler
from PyQt4.QtCore import QFSFileEngine

class FileDialogHandler(QAbstractFileEngineHandler):
def create(self,filename):
if str(filename).startswith(':'):
return None # Will be handled by Qt as a resource file
print("Create QFSFileEngine for {0}".format(filename))
return QFSFileEngine(filename)

class Example(QMainWindow):

def __init__(self):
super(Example, self).__init__()

self.initUI()

def initUI(self):

self.textEdit = QTextEdit()
self.setCentralWidget(self.textEdit)
self.statusBar()

openFile = QAction(QIcon('open.png'), 'Open', self)
openFile.setShortcut('Ctrl+O')
openFile.setStatusTip('Open new File')
openFile.triggered.connect(self.showDialog)

menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(openFile)

self.setGeometry(300, 300, 350, 300)
self.setWindowTitle('File dialog')
self.show()

def showDialog(self):
handler = FileDialogHandler()
#using QFileDialog.getOpenFileName works fine
fname = QFileDialog.getOpenFileName(None, 'Open file', '/home','All files (*.*)')
#dialog = QFileDialog()
#dialog.setOption(QFileDialog.DontUseNativeDialog,False)
#if dialog.exec_():
#fname = dialog.selectedFiles()
#else:
#fname = None
f = open(fname, 'r')
with f:
data = f.read()
self.textEdit.setText(data)

def main():
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())

if __name__ == '__main__':
main()

最佳答案

我不久前在getOpenFilename 时遇到了类似的问题。对我来说,解决方案是将后端从 native 更改为 Qt 自己的对话框实现。这可以通过如下所示的扩展调用语法来实现:

filename = QtGui.QFileDialog.getOpenFileName(self,
'Open file',
'/home',
'All files (*.*)',
options=QtGui.QFileDialog.DontUseNativeDialog)

在我更改为这种调用语法后,我再也没有遇到任何问题。

关于python - QFileDialog 窗口中没有可见的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12209557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com