Python 3 Tkinter附加标签以从条目标签打印用户输入

时间:2016-05-03 11:24:26

标签: python python-3.x tkinter

嘿伙计们我刚开始学习GUI,特别是刚开始使用tkinter。我花了几个小时在论坛上搜索我认为应该是一个明显而简单的解决方案,并发现一些人提出类似的问题,但我没有理解解决方案。 基本上我只是想让用户输入带有条目小部件的字母,并在按下go按钮时在标签上显示。如果有人能向我解释如何做到这一点,我将非常感激。

这是我写的代码:

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

1 个答案:

答案 0 :(得分: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()方法的别名。

  

将键盘焦点移动到此窗口小部件。这意味着所有键盘   发送到应用程序的事件将被路由到此小部件。