0
我在tkinter中編寫了一個gui,並使用發佈/訂閱模塊(pyPubSub)來通知程序的不同部分發生了什麼,如果他們訂閱了。所以,我有兩個功能,我需要一起工作。從tkinter,我正在使用:Python 3 - 使用kwargs和args only模塊
after_idle(callback, *args)
調用主循環內的消息發送。正如你所看到的,它只接受* args作爲發送給回調的參數。我送的回調是從pyPubSub:
sendMessage(topic, **kwargs)
所以,我結束了這一點:
root.after_idle(pub.sendMessage, ?)
我的問題是,如何使ARGS與kwargs工作?我必須調用具有位置參數的after_idle以使用回調進行發送,但回調只需要關鍵字參數。
我想我不確定那將如何解決它。例如,我有gui_obj.after_idle(pub.sendMessage,*包),因爲它需要和包看起來像這樣:[,],例如(有時有多個參數,有時不會,它不起作用無論哪種方式)。當after_idle註冊回調函數時,它會調用sendMessage(,),我無法弄清楚如何根據sendMessage的要求將它作爲sendMessage發送(,msg = )。我不斷得到:TypeError:sendMessage()需要2個位置參數,但有3個被給出 –
linus72982
沒關係,我想通了。我需要使用lambda作爲回調函數,然後將正確調用sendMessage。謝謝! – linus72982
「需要2個位置參數」異常是由after_idle沒有正確發送引起的。 sendMessage想要2位置參數(自我和主題),然後是kwargs。 after_idle發送主題和可選參數都作爲位置,所以當它只需要2(從我自己和1自己的技術上只有一個)時,得到3個定位(其中1個是自己) – linus72982