2016-05-03 4 views
-1

Hey Leute, ich habe gerade angefangen, über GUI's zu lernen und insbesondere angefangen mit tkinter. Ich habe Stunden damit verbracht, Foren nach etwas zu durchsuchen, von dem ich glaube, dass es eine offensichtliche und einfache Lösung sein sollte, und ich habe ein paar Leute gefunden, die ähnliche Fragen gestellt haben, aber ich habe die Lösungen nicht verstanden. Im Grunde versuche ich nur, den Benutzer dazu zu bringen, einen Brief mit einem Eingabe-Widget einzugeben und das auf einem Etikett anzuzeigen, wenn der Los-Knopf gedrückt wird. Wenn mir jemand erklären könnte, wie ich das mache, wäre ich sehr dankbar.Python 3 Tkinter Etikett anhängen, um Benutzereingaben vom Eintragslabel zu drucken

Hier ist der Code, den ich geschrieben habe:

#!/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() 

Antwort

0

Sie sollten .get() was StringVar enthält, wenn die Schaltfläche geklickt wird.

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

Auch für dieses Programm eine StringVar ein wenig übertrieben werden. Sie können leicht für Entry.get() gehen, um zu erhalten, was Eintrag enthält. Der folgende Code zeigt, wie man die Methode get() mit einem ziemlich einfachen (und etwas schmutzigen) Code verwendet.

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() ist ein Alias ​​für .focus_set() Methode.

Verschiebt den Tastaturfokus auf dieses Widget. Dies bedeutet, dass alle an die Anwendung gesendeten Ereignisse der Tastatur an dieses Widget weitergeleitet werden.

+1

Vielen Dank für Ihre gründliche Erklärung, es bedeutet mir sehr, dass Sie sich die Zeit nehmen würden, mir zu helfen. Genau das habe ich gesucht! Prost @Lafexios –