2009-04-21 44 views
2

私はPythonサーバーにTkinterのGUIインスタンスをTkinterウィンドウに渡すことで、tkinterのGUIを提供しています。問題は、最新の情報をラベルに保存することです。Pythonのtkinterのラベルを更新する

たとえば、サーバーには、ログオンしているユーザーを含むUsersリストがあります。初期リストのためにこれを行うのは簡単です:

string = "" 
for user in self.server.Users: 
    string += user + "\n" 

Label(master, text=string) 

しかしこれは一度だけ行います。その後、リストを更新するにはどうしたらいいですか?私は、 'ユーザーの更新'ボタンを追加することができますが、私はリストを自己更新する必要があります。

答えて

3

サーバーインスタンスでコールバックを使用できます。ユーザーリストが変更されるたびにラベルを更新するコールバックをインストールします。

サーバーコードを変更できない場合は、更新を数秒ごとにポーリングする必要があります。 Tkinterイベントシステムを使用して更新を追跡することができます。

def user_updater(self): 
    self.user_updater_id = self.user_label.after(1000, self.user_updater) 
    lines = [] 
    for user in self.server.Users: 
     lines.append(user) 
    self.user_label["text"] = "\n".join(lines) 

def stop_user_updater(self): 
    self.user_label.after_cancel(self.user_updater_id) 
2

次の例のように、それに対応するStringVarオブジェクトのテキストを設定することにより、Labelのテキストに変更:

from tkinter import * 

root = Tk() 
string = StringVar() 
lab = Label(root, textvariable=string) 
lab.pack() 
string.set('Changing the text displayed in the Label') 
root.mainloop() 

注意ラベルの表示されたテキストを変更するset機能の使用をlab

New Mexico Techを参照してください。この詳細については、topicを参照してください。

関連する問題