"Cancel" 在 PyQt4 中打开文件时出错
Error when "Cancel" while opening a file in PyQt4
我有一个简单的 PyQt4 GUI,我让用户打开一个 txt 文件,该文件将显示在 GUI 的 QPlainTextEdit 小部件中。
这是伪代码:
class mainWindow(QtGui.QWidget):
def __init__(self):
super(mainWindow, self).__init__()
self.layout = QtGui.QVBoxLayout()
self.plain = QtGui.QPlainTextEdit()
self.openButton = QtGui.QPushButton("OPEN")
self.layout.addWidget(self.plain)
self.layout.addWidget(self.openButton)
self.openButton.clicked.connect(self.openFile)
def openFile(self):
openFileName = QtGui.QFileDialog.getOpenFileName(None, "Open File","/some/dir/","TXT(*.txt);;AllFiles(*.*)")
openFile = open(openFileName,'r').read()
self.plainTextEdit.appendPlainText(openFile)
所以我点击 "OPEN" 按钮,QFileDialog 弹出,但是如果我点击 QFileDialog 中的 "CANCEL" 按钮,我得到这个错误:
IOError: [Errno 2] No such file or directory: PyQt4.QtCore.QString(u'')
作为程序员,我知道这个错误很容易被忽略,不会影响代码的运行,但用户不知道。有没有办法消除终端打印的这个错误?
是:只需检查 getOpenFileName
中的 return 值。如果用户单击“取消”,此方法 return 为空 QString
。由于空的 QString
被认为是错误的,您可以通过将 openFile
方法的最后两行放在 if openFileName:
语句中来检查用户是否选择了文件而不是单击“取消”:
def openFile(self):
openFileName = QtGui.QFileDialog.getOpenFileName(None, "Open File","/some/dir/","TXT(*.txt);;AllFiles(*.*)")
if openFileName:
openFile = open(openFileName,'r').read()
self.plainTextEdit.appendPlainText(openFile)
如楼上所说,你应该调试检查什么样的答案"openFilename" returns.
在 Pyqt5 中,当您按取消或 'x' 关闭 window 时,它 returns 一个元组
所以要解决这个问题:
openFileName = QFileDialog.getOpenFileName(self)
if openFileName != ('', ''):
with open(openFileName [0], 'r') as f:
file_text = f.read()
self.text.setText(file_text)
我有一个简单的 PyQt4 GUI,我让用户打开一个 txt 文件,该文件将显示在 GUI 的 QPlainTextEdit 小部件中。 这是伪代码:
class mainWindow(QtGui.QWidget):
def __init__(self):
super(mainWindow, self).__init__()
self.layout = QtGui.QVBoxLayout()
self.plain = QtGui.QPlainTextEdit()
self.openButton = QtGui.QPushButton("OPEN")
self.layout.addWidget(self.plain)
self.layout.addWidget(self.openButton)
self.openButton.clicked.connect(self.openFile)
def openFile(self):
openFileName = QtGui.QFileDialog.getOpenFileName(None, "Open File","/some/dir/","TXT(*.txt);;AllFiles(*.*)")
openFile = open(openFileName,'r').read()
self.plainTextEdit.appendPlainText(openFile)
所以我点击 "OPEN" 按钮,QFileDialog 弹出,但是如果我点击 QFileDialog 中的 "CANCEL" 按钮,我得到这个错误:
IOError: [Errno 2] No such file or directory: PyQt4.QtCore.QString(u'')
作为程序员,我知道这个错误很容易被忽略,不会影响代码的运行,但用户不知道。有没有办法消除终端打印的这个错误?
是:只需检查 getOpenFileName
中的 return 值。如果用户单击“取消”,此方法 return 为空 QString
。由于空的 QString
被认为是错误的,您可以通过将 openFile
方法的最后两行放在 if openFileName:
语句中来检查用户是否选择了文件而不是单击“取消”:
def openFile(self):
openFileName = QtGui.QFileDialog.getOpenFileName(None, "Open File","/some/dir/","TXT(*.txt);;AllFiles(*.*)")
if openFileName:
openFile = open(openFileName,'r').read()
self.plainTextEdit.appendPlainText(openFile)
如楼上所说,你应该调试检查什么样的答案"openFilename" returns.
在 Pyqt5 中,当您按取消或 'x' 关闭 window 时,它 returns 一个元组
所以要解决这个问题:
openFileName = QFileDialog.getOpenFileName(self)
if openFileName != ('', ''):
with open(openFileName [0], 'r') as f:
file_text = f.read()
self.text.setText(file_text)