Python 3 -- 将 kwargs 与仅 args 模块一起使用
Python 3 -- using kwargs with an args only module
我正在 tkinter 中编写一个图形用户界面,并使用 publish/subscribe 模块 (pyPubSub) 来通知程序的不同部分如果他们订阅了会发生什么。所以,我有两个功能需要协同工作。来自 tkinter,我正在使用:
after_idle(callback, *args)
在主循环中调用消息发送。如您所见,它只接受 *args 作为要发送到回调的参数。我发送的回调来自 pyPubSub:
sendMessage(topic, **kwargs)
所以,我最终得到了这个:
root.after_idle(pub.sendMessage, ?)
我的问题是,如何让 args 与 kwargs 一起工作?我必须使用位置参数调用 after_idle 以通过回调发送,但回调只需要关键字参数。
您可以随时使用 lambda
,这是一个什么都不做的简短示例。
import tkinter as tk
def test(arg1, arg2):
print(arg1, arg2)
root = tk.Tk()
root.after_idle(lambda: test(arg1=1, arg2=2))
root.mainloop()
我正在 tkinter 中编写一个图形用户界面,并使用 publish/subscribe 模块 (pyPubSub) 来通知程序的不同部分如果他们订阅了会发生什么。所以,我有两个功能需要协同工作。来自 tkinter,我正在使用:
after_idle(callback, *args)
在主循环中调用消息发送。如您所见,它只接受 *args 作为要发送到回调的参数。我发送的回调来自 pyPubSub:
sendMessage(topic, **kwargs)
所以,我最终得到了这个:
root.after_idle(pub.sendMessage, ?)
我的问题是,如何让 args 与 kwargs 一起工作?我必须使用位置参数调用 after_idle 以通过回调发送,但回调只需要关键字参数。
您可以随时使用 lambda
,这是一个什么都不做的简短示例。
import tkinter as tk
def test(arg1, arg2):
print(arg1, arg2)
root = tk.Tk()
root.after_idle(lambda: test(arg1=1, arg2=2))
root.mainloop()