2016-05-03 2 views
-1

Эй, ребята, я только что начал изучать графический интерфейс и, в частности, начал использовать 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

Большое вам спасибо за подробное объяснение, это для меня много значит, что вы потратите время, чтобы помочь мне. Это именно то, что я искал! Cheers @Lafexios –

Смежные вопросы