2016-05-03 3 views
-1

ちょっと私はGUIについて学び始めたばかりです。特にtkinterを使い始めました。私は明らかな単純な解決策でなければならないと信じているもののフォーラムを検索する時間を費やして、同様の質問をする少数の人々を見つけたが、解決策を理解できなかった。 基本的に私は、入力ウィジェットを使って文字を入力し、goボタ​​ンが押されたときにそれをラベルに表示するようにしています。誰かが私にこのことをどうやって説明することができれば、私は非常に感謝しています。Python 3エントリーラベルからユーザー入力を印刷するためのラベルを追加するTkinter

ここで私が書いたコードです:

#!/usr/bin/env python3 

from tkinter import* 
from tkinter import ttk 
import random 


root = Tk() 
root.title('test') 

frame = ttk.Frame(root, padding='3 3 12 12 ') 
frame.grid(column=0, row=0, sticky=(N, W, E, S)) 
frame.columnconfigure(0, weight=1) 
frame.rowconfigure(0, weight=1) 

letter = StringVar() 


def gobutton(*args): 

    print_label['text'] += letter 


print_label = ttk.Label(frame, text="") 
print_label.grid(column=1, row=1, sticky=N) 


letter_entry = ttk.Entry(frame, width=7, textvariable=letter) 
letter_entry.grid(column=1, row=2, sticky=S) 

g_button = ttk.Button(frame, width=7, text='GO', command=gobutton) 
g_button.grid(column=3, row=3, sticky=S) 

for child in frame.winfo_children(): 
    child.grid_configure(padx=5, pady=5) 

letter_entry.focus() #WHAT DOES THIS DO? 
root.bind('<Return>', gobutton) 

root.mainloop() 

答えて

0

あなたがすべき.get()ボタンがクリックされたときに含まれているものをStringVarが。

def gobutton(): #if you don't plan to pass any parameters, *args is unnecesarry 
    print_label['text'] += letter.get() 

また、このプログラムでは、StringVarを少し過剰使用します。 Entry.get()に簡単に行くことができます。以下のコードは、get()メソッドを非常に単純な(そして少し汚れた)コードで使用する方法を示しています。

def getMethod(): 
    lbl.configure(text=ent.get()) 
    #or 
    #lbl["text"] = ent.get() 

root = tk.Tk() 

tk.Button(root, text="Get Entry", command=getMethod).pack() 
ent = tk.Entry(root) 
lbl = tk.Label(root, text = "Before click") 
lbl.pack() 
ent.pack() 
root.mainloop() 

.focus().focus_set()方法の別名です。

キーボードフォーカスをこのウィジェットに移動します。これは、すべてのキーボード イベントがアプリケーションに送信され、このウィジェットにルーティングされることを意味します。

+1

あなたの徹底的な説明をいただきありがとうございます。私には時間を掛けて助けてくれることがたくさんあります。これはまさに私が探していたものです!乾杯@ラフェクシオス –

関連する問題