Python:TypeError:QString .__ getitem __():参数与任何重载调用都不匹配

时间:2015-12-03 00:53:54

标签: python user-interface qstring

我正在创建一个函数,它使用字典替换文本文件中的单词,即如果在文件中遇到第一个单词对,则将其替换为第二个单词。此外,当用户使用GUI中的窗口小部件时调用创建的函数。所以创建的函数都存在于ui类中。 (希望这是有道理的)。我正在使用python

字典看起来像这样(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

1 个答案:

答案 0 :(得分:0)

您使用QString初始化dictlist而不是dict

dictlist = self.lineEdit_dict.text()

当您尝试以dictdictlist[key]

的身份访问它时

您还有许多其他问题,例如f2 = open('filename2', 'w')应为f2 = open(filename2, 'w')