Python: TypeError: QString.__getitem__(): аргументы не соответствуют ни одному перегруженному вызову
Я создаю функцию, которая использует словарь для замены слов в текстовом файле, т. Е. Если в файле встречается первая пара слов, она заменяется второй. Кроме того, созданная функция вызывается, когда виджет в GUI задействован пользователем. Таким образом, все созданные функции существуют внутри класса пользовательского интерфейса. (надеюсь, это имеет смысл). Я использую питон
Словарь выглядит следующим образом (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 ответ
Вы инициализировали dictlist
с QString не dict
:
dictlist = self.lineEdit_dict.text()
пока вы пытались получить к нему доступ как к dict
: dictlist[key]
У вас также есть много других проблем, таких как f2 = open('filename2', 'w')
должно быть f2 = open(filename2, 'w')