[英]Adding Bind Event To Entry Fields Created Using Loops
這里的主要目的也是將事件綁定到使用循環動態創建的輸入字段中,然后從這些字段中獲取值,但是我在這里遇到的問題是如何創建一個函數,該函數可以在用戶一旦使用時就從輸入字段中獲取文本開始在框中輸入。
from tkinter import Tk, LEFT, BOTH, StringVar
from tkinter.ttk import Entry, Frame
import functools
class Example(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.initUI()
def initUI(self):
self.parent.title("Entry")
self.pack(fill=BOTH, expand=1)
self.contents = []
self.ent = []
for i in range(0,5):
self.contents.append(StringVar())
# give the StringVar a default value
for i in range(0,5):
self.entry = Entry(self)
self.entry.grid(row=0,column=i)
self.entry["textvariable"] = self.contents[i]
self.entry.bind('<KeyRelease>', self.on_changed)
self.ent.append(self.entry)
def on_changed(self, event):
print('contents: {}'.format(self.contents.get()))
return True
def main():
root = Tk()
ex = Example(root)
root.geometry("800x400")
root.mainloop()
if __name__ == '__main__':
main()
使用bind
,傳遞給回調的事件對象包括對小部件的引用,您可以使用該小部件獲取條目的值。
例
def on_changed(self, event):
entry = event.widget
print('contents: {}'.format(entry.get()))
return True
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.