嘿伙计们我刚开始学习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()
答案 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()方法的别名。
将键盘焦点移动到此窗口小部件。这意味着所有键盘 发送到应用程序的事件将被路由到此小部件。