带参数的计时器对象(Python)
你怎么在一个类里面用定时器对象在不同的def
之间传递参数呢?
def onrepeat(self,user, arg):
args = arg.split()
messagearg = args[0]
colorarg = args[1]
if colorarg == "black":
color = "&0"
if colorarg == "dark blue" or "darkblue":
color = "&1"
if colorarg == "dark green" or "darkgreen":
color = "&2"
if colorarg == "dark teal" or "darkteal":
color = "&3"
if colorarg == "dark red" or "darkred":
color = "&4"
if colorarg == "purple":
color = "&5"
if colorarg == "gold":
color = "&6"
if colorarg == "gray":
color = "&7"
if colorarg == "dark gray" or "darkgrey" or "dark grey" or "darkgrey":
color = "&8"
if colorarg == "blue":
color = "&9"
if colorarg == "bright green" or "brightgreen":
color = "&a"
if colorarg == "teal":
color = "&b"
if colorarg == "red":
color = "&c"
if colorarg == "pink":
color = "&d"
if colorarg == "yellow":
color = "&e"
if colorarg == "white":
color = "&f"
if colorarg == "":
color = "&f"
self.timerobj = Timer(3.0, self.repeat2)
self.timerobj.start()
def repeat2(self,messagearg,color):
self.bot.sendMessage(color + messagearg)
这样做会报错,提示我:
repeat2 needs 3 arguments while only 2 are given.
为了修复这个问题,我把它改成了
self.timerobj = Timer(3.0, self.repeat2)
但是这样也不管用!
self.timerobj = Timer(3.0, self.repeat2(messagearg,color))
1 个回答
0
定时器的定义如下:
class threading.Timer(interval, function, args=[], kwargs={})
注意,它可以接收 args
和 kwargs
。这意味着你可以通过简单地提到它们来传递参数给定时器函数。试试这个:
Timer(3.0, self.repeat2,messagearg,color)