Tkinter Entry属性用户结果

时间:2018-03-30 21:04:42

标签: python tkinter

我想获取用户的输入,将其存储为变量并打印该变量(用于测试),但是当整个程序运行时,不会打印任何结果。

from Tkinter import *
import os.path
import PIL.Image, PIL.ImageTk
import Tkinter as tk

def on_change(entry):
    inp = entry.widget.get()
    print inp

root = tk.Tk()

#Makes a canvas for objects    
canvas = Canvas(root, height=100, width=400)
#Displays the canvas
canvas.grid(row=3, column=2)

root.grid_columnconfigure(0, weight=1)
root.grid_columnconfigure(1, weight=1)

label = Label(root, text="Enter an element or the atomic number from 1 to 118.").grid(row=0, column=2)

entry = tk.Entry(root)
entry.pack()
entry.bind("<Return>", on_change)
entry.grid(row=2, column=2)
entry.focus()

def entry_delete(evt):
    entry.delete(0, 'end')

entry.bind("<Return>", entry_delete)

root.mainloop()

1 个答案:

答案 0 :(得分:0)

您正在<Return>上创建绑定,然后用不同的绑定覆盖该绑定。

如果要绑定到多个函数,则需要将add参数设置为True

entry.bind("<Return>", entry_delete, add=True)

根据我的经验,总是有一个单一的绑定是最好的。如果您需要绑定来执行多项操作,请创建一个函数来调用这些内容:

def on_return(event):
    on_change(event)
    entry_delete(event)
entry.bind("<Return>", on_return)