连续两天我都遇到了一个奇怪的错误,我无法理解问题是要求你提供帮助。我有一个独特的功能。
def find_config(self, path):
dic = list(path.split('/'))
print dic
size = len(dic)
print '/'.join(dic)
当我在类构造函数中运行它时,它工作正常,但是当我在事件处理程序按钮内运行它时,它会挂起在join函数上。
构造
class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.setupUi(self)
self.filepath = ""
self.action_Open.activated.connect(self.file_open_func)
print self.find_config('/home/juster/asdfa/main.c')
处理程序按钮:
def file_open_func(self, path = 0):
try:
self.filepath = 0;
if not path:
self.filepath = QFileDialog.getOpenFileName(self, 'Open file', self.rootpath, "C/C++ (*.c);; All (*.*);; Makefile (makefile)")
else:
self.filepath = path
print self.find_config(self.filepath)
f = open(self.filepath, 'a+')
看看我为终端变量dic带来了什么?
来自constuctor的函数find_config:
['', 'home', 'juster', 'asdfa', 'main.c']
函数find_config来自handler:
[PyQt4.QtCore.QString(u''), PyQt4.QtCore.QString(u'home'), PyQt4.QtCore.QString(u'juster'), PyQt4.QtCore.QString(u'asdfa'), PyQt4.QtCore.QString(u'main.c')]
这很神奇吗?
答案 0 :(得分:1)
从处理程序调用时,path
字符串看起来不像常规Python str
,而是QT类QString
的实例。这似乎适用于split
,但不适用于join
。我想如果你将它转换为str
的常规字符串,你会发现问题消失了。
def find_config(self, path):
dic = list(str(path).split('/')) # added str() call to this line
print dic
size = len(dic)
print '/'.join(dic)
请注意,您的dic
变量具有相当误导性的名称。这是一个列表,而不是字典,所以调用它dic
要求混淆(虽然创建它时list
调用似乎是不必要的)。我也不确定这个功能是做什么的。它似乎分裂了一个字符串,然后完全重新加入它。