2015-12-03 73 views
1

我正在创建一个函数,它使用字典替换文本文件中的单词,即如果在文件中遇到第一个单词对,由第二个取代。此外,当GUI中的小部件被用户占用时创建的功能被调用。所以创建的函数都存在于一个UI类中。 (希望这是有道理的)。我正在使用pythonPython:TypeError:QString .__ getitem __():参数与任何重载调用不匹配

字典看起来像这样(dictlist = {'test':'rest','happy':'sad','big':'small'})。该函数直接在Python编辑器中编写时工作正常,但是当我将它复制到翻译的.ui代码时,出现以下错误。任何人都可以建议为什么会发生这种情况。我对此很陌生,所以希望我的解释有道理。

line = rpairs(line, dictlist) 
line 1486, in rpairs 
temp = temp.replace(key, dictlist[key]) 
TypeError: QString.__getitem__(): arguments did not match any overloaded call: 
overload 1: argument 1 has unexpected type 'QString' 
overload 2: argument 1 has unexpected type 'QString' 

def temp(self): 
    import string 
    global filename 
    global mytemp 
    dictlist = self.lineEdit_dict.text() 
    filename2 = self.lineEdit_outputfilename.text() 

    f1 = open(filename, 'r')  
    f2 = open('filename2', 'w') 

    def rpairs (temp, dictlist): 
     for key in dictlist: 
      temp = temp.replace(key, dictlist[key]) 
     return temp 

    for line in f1: 
     line = rpairs(line, dictlist) 
     f2.write(line) 
    f2.close() 
    return mytemp 
+0

您是否试图通过阅读self.lineEdit_dict.text()来构造'dictlist'作为字典?或者您已经在程序代码中使用了它? –

回答

0

你为QString初始化dictlist不是dict

dictlist = self.lineEdit_dict.text() 

,而你试图访问到它作为一个dictdictlist[key]

您还很多其他问题如f2 = open('filename2', 'w') d是f2 = open(filename2, 'w')

+0

@ Marco。非常感谢您的回复。我已经修改了公开声明中的类型。 – Sren

+0

@Marco。关于单词问题/评论,因为我是新手,我不明白你是什么意思,我用QString而不是字典初始化了Dictlist,并试图以字典的形式访问它。你有什么建议可以解决这个问题吗?我对QString没有很强的理解。 – Sren

+0

@bigbrother:关于dictlist问题/评论,因为我是新手,我不明白你是什么意思,我用QString而不是字典初始化dictlist,并试图以字典的形式访问它。你有什么建议可以解决这个问题吗?我对QString没有很强的理解。 – Sren

相关问题