2016-09-04 6 views
0

私の質問は、tkinterを使ってPythonでGUIプログラミングをすることです。私はこれがPython 3xだと信じています。ボタンプレスからtkinterのラベルを更新する

私の質問:GUIを実行するプログラムを実行しているうちに、ボタンでラベルを更新できますか?具体的には、ボタンを押した後に表示されるラベルを変更する方法はありますか?私はこの前にスタックオーバーフローを参照してStringVar()メソッドを採用しましたが、実際にはGUIからテキストを完全に省略して自分の問題を修正するようには見えません!ここで

は、任意の助けをいただければ幸いです

from tkinter import * 

root = Tk() 
root.title('Copy Text GUI Program') 

copiedtext = StringVar() 
copiedtext.set("Text is displayed here") 


def copytext(): 
    copiedtext.set(textentered.get()) 

# Write 'Enter Text Here' 
entertextLabel = Label(root, text="Enter Text Here") 
entertextLabel.grid(row=0, column=0) 

# For the user to write text into the gui 
textentered = Entry(root) 
textentered.grid(row=0, column=1) 

# The Copy Text Button 
copytextButton = Button(root, text="Copy Text") 
copytextButton.grid(row=1, columnspan=2) 

# Display the copied text 
displaytextLabel = Label(root, textvariable=copiedtext) 
displaytextLabel.grid(row=2,columnspan=2) 


copytextButton.configure(command=copytext()) 

root.mainloop() 

以下のコードです!あなたがしなければならない何

+0

をまた、私の改正として、質問、私はdisplaytextLabelのtextvariableの代わりにテキストを書いたとき、それはPY-4060(私はこれがメモリではないと仮定していると思います)を出力するので、問題ではないことが分かります。 – Afr0

答えて

0

はそうのようなcopytextButtonオブジェクトにボタンイベントをバインドすることです:

copytextButton.bind('<Button-1>', copytext) 

これは、コールバック関数ということ - あなたは、左クリックしたときにボタンをcopytext()が呼び出されます。

コールバックはイベント引数を送るので、若干の変更が、関数自体に必要とされている:

def copytext(event): 
    copiedtext.set(textentered.get()) 

編集: この行は必要ありません。

copytextButton.configure(command=copytext()) 
+0

本当にありがとうございます、それは今働いています!バインド機能がconfigure機能の代わりにここで使用する方が良い理由がありますか? – Afr0

+1

あなたは 'configure'でコマンドに関数を割り当てませんでしたが、関数' copytext'の結果を割り当てました。 'copytextButton.configure(command = copytext)'を使うべきです。 – acw1668

+0

@ acw1668が正しいですが、最善の解決策は括弧を削除することです(これも忘れました)。 – mpurg

関連する問題