3

誰でも私の問題を手伝ってくれませんか。私はPythonが初めてで、次の場合に関数に引数を渡す方法を取得できません:別のファイル(sentiment_analysis)に、辞書とオブジェクトの配列があります:

positiveSentiments = dict() // here are some words related to each of the object
objects = ['Google', 'Apple', 'Motorola']

各オブジェクトの肯定的な感情を表示する必要があります。

def onButtonPosObject(p):
for key in sentiment_analysis.positiveSentiments.keys():
    if key == p:
        text.insert(END, sentiment_analysis.positiveSentiments[key])

submenu = Menu(text, tearoff=0)
for p in sentiment_analysis.objects:
   submenu.add_command(label=p, command = lambda : onButtonPosObject(p), underline=0)
textmenu.add_cascade(label='Display positive sentiments', menu=submenu, underline=0)

onButtonPosObject() 関数のパラメーターとしてラベル (p) の値を渡す必要があると思います。すべてのオブジェクトの PositiveSentiments 辞書から単語のリストを取得する必要がありますが、[] のような空の値を取得します。どんなお勧めにもとても感謝しています!

4

2 に答える 2

5

ラムダで p の現在の値を取得する必要があります。

submenu.add_command(label=p, command = lambda p=p: onButtonPosObject(p), underline=0)
于 2012-04-24T00:13:17.327 に答える
0

何が起こっていると思いますが、あなたの肯定的な感情 ['Motorola'] リストが空です。何が起こっているかを確認するために、その「for p insentiment_analysis.objects」ループに print ステートメントを追加します。このようなループでラムダ コマンドを使用すると、onButtonPosObject を呼び出すときに、各メニュー項目のコマンドが p に同じ値 (p の最終値) を渡すように設定することになります。

変数を各ラムダにローカルな名前で保存し、それを引数として渡す必要があります (乱雑に見えます): lambda x=p: onButtonPosObject(x). 試してみて、何が得られるか見てください。

于 2012-04-23T22:46:13.940 に答える