Я делаю программу и обнаружил ошибку.Поэтому в моей программе вы можете создавать кнопки, которые выполняют простую функцию, меняют цвета.После создания кнопки ее текст сохраняется в файле .dat, а после загрузки он создает кнопку с текстом, сохраненным в файле.
Кнопка создается, но при попытке изменить ееcolor он посылает мне ошибку:
TypeError: changecolor() missing 1 required positional argument: 'self'
Я видел другие посты, в которых говорилось, что ответом было создание экземпляра функции, например:
class F:
define c:
print("1")
define a:
print("3")
f = F
f.c
Но если я попытаюсь это сделатьЯ получаю еще одну ошибку:
__init__() missing 3 required positional arguments: 'MainWindow', 'color', and 'text'
И я уже перепробовал все, чтобы исправить эту ошибку, поэтому я предполагаю создать экземпляр класса и попытаться добавить требуемые позиционные аргументы - не вариант.
Итак, как я могу это исправить?Если вы решили проблему, скажите, пожалуйста, как это сделать.
Вот код для загрузки файла с текстом:
class LoadButtons:
def _init_(self):
global console
self.instance=console
def LoadButton(self):
global lnumber, path, name, p
if os.path.isfile("%s\BI\Button%s.dat" %(path, lnumber)):
print("Button%s found!" %(lnumber))
name = pickle.load(open("%s\BI\Button%s.dat" %(path, lnumber), 'rb'))
console = Button(MainWindow, text=name,bg = "#E6E6E6", command=needed_but.changecolor())
console.pack()
LoadButtons()._init_()
lnumber += 1
LoadButtons().LoadButton()
else:
lnumber = 0
А вот код для того, чтобы кнопки меняли цвета:
class needed_but:
def __init__(self,MainWindow,color,text):
console = Button(MainWindow, text=text,bg=color, command=self.changecolor)
console.pack()
self.instance=console
def changecolor(self):
buttonred,buttongreen,buttonblue=get_color()
global clicked,misses_dict,dictionary
#clicked=True
#global buttoncolor
if buttonred == True:
if os.path.exists("%s\SI" %(path)):
self.instance.configure(bg = "#ff0000")
dun = self.instance.cget('text')
print(dun)
if dun in misses_dict:
misses_dict[('%s' %(dun))] += 1
else:
misses_dict[('%s' %(dun))] = 1
dictionary = misses_dict
pickle.dump(dictionary, open("%s\SI\SIA.dat" %(path), 'wb'))
print(misses_dict)
buttonred = False
else:
print("ATTENTION: The SI Folder was not found, Please Create a folder with the name SI\nIf you don't create the folder, then you will not be able to use this program")
elif buttongreen == True:
self.instance.configure(bg = "#00ff00")
elif buttonblue == True:
self.instance.configure(bg = "#2e9afe")
Спасибо!