【问题标题】:Adding Bind Event To Entry Fields Created Using Loops将绑定事件添加到使用循环创建的条目字段
【发布时间】:2019-09-01 10:44:42
【问题描述】:

这里的主要目的是将事件绑定到使用循环动态创建的输入字段,然后从这些字段中获取值,但是我在这里遇到问题,无法创建一个尽快从输入字段中获取文本的函数当用户开始在框中输入内容时。

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()

【问题讨论】:

    标签: python function tkinter tk


    【解决方案1】:

    当您使用bind 时,传递给回调的事件对象包含对小部件的引用,您可以使用它来获取条目的值。

    示例

    def on_changed(self, event):
        entry = event.widget
        print('contents: {}'.format(entry.get()))
        return True
    

    【讨论】:

    • 谢谢马恩!!我不知道这个小部件参考!!
    猜你喜欢
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 2020-08-31
    • 2017-05-25
    相关资源
    最近更新 更多