我正在制作一个节目,但我发现了一个错误。 因此,在我的程序中,您可以创建执行简单功能,更改颜色的按钮。 创建按钮后,它的文本保存在.dat文件中,加载后,它会创建文本中存储文本的按钮。
按钮创建,但当我尝试使其更改颜色时,它会向我发送错误:
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")
谢谢!
答案 0 :(得分:0)
您将实例方法称为类方法。必须通过changecolor
实例调用needed_but
,self
实例是您打算在其上运行的but = needed_but()
but.changecolor()
对象。例如:
class needed_but:
def __init__(self, MainWindow, color, text):
由于您还没有实例化任何此类对象,因此我不完全确定您对此次通话的期望。
<强>更新强>
这是您当前的问题:
but = needed_but()
与
self
根据您的初始化方法,必须提供所有三个列出的值才能创建对象。来自主代码的实例化不提供 - 只有实例化的隐式function openLink(element) {
// Do your other animation stuff
setTimeout(function() {
window.location = element.getAttribute("data-location");}, 1500); // element = your div element and getting the data-location attribute gives the url to open
}
。