2011-06-28 13 views
0

私はTkinterプログラムを作成しており、エントリーウィジェットの隣にラベルが表示されているルートを持っています。エントリーウィジェット情報へのアクセス:tkinter python

EX: 名 - > SEARCHTERM ENTRY BOX

私はエントリーwigetsから値のリストを作成しようとしています:

(EX [ ''、 'ユーザの入力'、 'ユーザー入力'])

私はルートのエントリウィジェットを作成し、値を取得する機能を持っている:私はそれで別のPythonプログラムを実行するためにnew_search_termsと呼ばれるリストにアクセスできるようにしたい

def get_user_entries(user_entries): 

    new_search_terms = [] 

    for entry in user_entries: 
     new_search_terms.append(entry.get()) 
    return new_search_terms 

を。

ボタンのコマンドとしてこの関数を使用しようとしました。私は別の場所でボタンをバインドしようとしました。私は別の場所でボタンを呼び出そうとしました。私はnew_search_termsがクラス変数だったクラスを作成しようとしましたが、上記の関数から返された情報にアクセスできないため、更新されたクラス変数は保持されませんでした。インターネットやいくつかの書籍を使い切った後、私はまだ情報が印刷されるのではなくボタン機能から返される例を見つけました。私は別の場所でこの情報にアクセスできる必要があります。

私が必要とする情報にアクセスする方法はありますか、これについてはTkinterで別の方法がありますか?私はボタンを作成

コードは:

def uc_1(original_names, final_names, root): 
    user_entries = [] 
    for index in range(len(original_names)): 
     row = Frame(root) 
     info = Label(row, text = original_names[index]+'->'+final_names[index]) 
     user_entry = Entry(row) 
     row.pack(side=TOP, fill=X) 
     user_entry.pack(side=RIGHT, expand=YES, fill=X) 
     user_entries.append(user_entry) 
     info.pack(side=LEFT) 
    return user_entries 

ありがとう:

ここ
done = Button(root, text='Done', command= lambda: get_user_entries(user_entries)) 
done.pack() 

は、エントリやラベルを作成したコードです!

+0

イベントバインディングに問題がある場合は、さらにソースコードを提供してください。 – phineas

+0

ボタンを作成するコード。 'done =ボタン(ルート、テキスト='完了 '、コマンド=ラムダ:get_user_entries(user_entries))' が完了しました。パック() ここでは、エントリを作成したコードであり、 DEF uc_1(original_names、final_names、根)ラベル: \t user_entries = [] \tインデックスの範囲内(LEN(original_names)): \t \t行=フレームを(ルート) \t \t情報=ラベル(行、テキスト= original_names [インデックス] + ' - >' + final_names [インデックス]) \t \t user_entry =エントリ(行) \t \t row.pack(側面= TOP、フィル= X) \t \t user_entry.pack(side = RIGHT、expand = YES、fill = X) \t \t user_entries.append(user_entry) \t \t info.pack(側= LEFT) \t戻りuser_entries –

+0

あなたの質問の編集ボタンを使用して、適切なコードのインデントを使用してください。 – phineas

答えて

0

ボタンコマンドは「戻る」ことはありません。彼らは行いますが、イベントループに戻りますので、返されるものは何でも処理することはありません。

あなたが求めていることを知ることは難しいと言われています。あなたは「関数から返された情報にアクセスすることはできません」と言いますが、理由は分かりません。それを呼び出すと、return文が返すものは返されませんか?それは全く不可能なようです。

'self.OnButton'を実行するようにボタンを設定し、 'self.OnButton'を定義して関数 'get_user_entries'を呼び出すと、どうなりますか?それは何も再試行しないのですか?

それを見、このよう:あなたのボタンの機能はすべきではないリターン何か、それは何かをする必要があります。それはあなたに機能を呼び、それが何を返すのか、あなたが呼びたいものを呼び出すことでそれを行うことができます。

関連する問題