AttributeError: 'QString' object has no attribute 'rfind'
AttributeError: 'QString' object has no attribute 'rfind'
我的应用程序 运行 在一台计算机上运行正常,但是当我 运行 在另一台计算机上使用相同的应用程序时,我收到错误消息:
Traceback (most recent call last):
File "./th.py", line 98, in browse_file2
self.textEdit_2.append(str(os.path.basename(p)))
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.py", line 121, in basename
i = p.rfind('/') + 1
AttributeError: 'QString' object has no attribute 'rfind'
我看到过类似的错误here。据此,我需要将参数类型转换为 'QString' 数据类型,并且我正在执行的 that.The 脚本部分有错误:
def browse_file(self):
#files handling
caption="Open File"
directory='./'
filter_mask="fastq files (*.fastq)"
self.textEdit.setText("")
f_1=(QFileDialog.getOpenFileNames(None, caption, directory, filter_mask))
#for st in f_1:
for p in f_1:
self.textEdit.append(str(os.path.basename(p)))
global R1
R1=f_1
#if textEdit.toPlainText
def browse_file2(self):
#files handling
caption="Open File"
directory='./'
filter_mask="fastq files (*.fastq)"
f_2=(QFileDialog.getOpenFileNames(None, caption, directory, filter_mask))
for p in f_2:
self.textEdit_2.append(str(os.path.basename(p)))
global R2
R2=f_2
谁能告诉我这个错误的可能原因是什么?让我知道您是否需要任何其他代码部分。提前致谢。
当 pyqt
第一次包装 Qt
时,他们保留了 QString
class 而不是将其转换为原生 python 字符串(即 str
).大多数对字符串进行操作的 python 库(如 os.path
)期望 str
或 unicode
对象,而不是 QString
。这意味着您必须不断地对 pyqt
中的所有 return 值进行类型转换
text = unicode(mywidget.text())
幸运的是,pyqt
有较新版本的 api,可以自动为您进行类型转换。您只需要告诉它使用更新的 api。在 python 代码的开头,在进行任何其他导入之前,您可以这样做
import sip
sip.setapi('QString', 2)
还有一些对象 newer api's。
我的应用程序 运行 在一台计算机上运行正常,但是当我 运行 在另一台计算机上使用相同的应用程序时,我收到错误消息:
Traceback (most recent call last):
File "./th.py", line 98, in browse_file2
self.textEdit_2.append(str(os.path.basename(p)))
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.py", line 121, in basename
i = p.rfind('/') + 1
AttributeError: 'QString' object has no attribute 'rfind'
我看到过类似的错误here。据此,我需要将参数类型转换为 'QString' 数据类型,并且我正在执行的 that.The 脚本部分有错误:
def browse_file(self):
#files handling
caption="Open File"
directory='./'
filter_mask="fastq files (*.fastq)"
self.textEdit.setText("")
f_1=(QFileDialog.getOpenFileNames(None, caption, directory, filter_mask))
#for st in f_1:
for p in f_1:
self.textEdit.append(str(os.path.basename(p)))
global R1
R1=f_1
#if textEdit.toPlainText
def browse_file2(self):
#files handling
caption="Open File"
directory='./'
filter_mask="fastq files (*.fastq)"
f_2=(QFileDialog.getOpenFileNames(None, caption, directory, filter_mask))
for p in f_2:
self.textEdit_2.append(str(os.path.basename(p)))
global R2
R2=f_2
谁能告诉我这个错误的可能原因是什么?让我知道您是否需要任何其他代码部分。提前致谢。
当 pyqt
第一次包装 Qt
时,他们保留了 QString
class 而不是将其转换为原生 python 字符串(即 str
).大多数对字符串进行操作的 python 库(如 os.path
)期望 str
或 unicode
对象,而不是 QString
。这意味着您必须不断地对 pyqt
text = unicode(mywidget.text())
幸运的是,pyqt
有较新版本的 api,可以自动为您进行类型转换。您只需要告诉它使用更新的 api。在 python 代码的开头,在进行任何其他导入之前,您可以这样做
import sip
sip.setapi('QString', 2)
还有一些对象 newer api's。