如何在双击之前禁用输入输入?

时间:2018-03-10 02:38:38

标签: python python-3.x tkinter tkinter-entry

我正在使用python 3.6开发GUI但是我需要用户双击 finish();小部件以允许输入(以防止意外修改字段),而不仅仅是按任意键输入文字。

  • 有没有办法阻止用户通过击键直到双倍输入 点击Entry

我首先尝试使用以下方法覆盖事件以取消绑定键击,但它们都没有工作,因此尚未实现新绑定(双击)的重新定义。

Entry

1 个答案:

答案 0 :(得分:3)

在双击之前通过按键来阻止用户输入的一种简单方法是简单地通过双击操作Entry的状态并聚焦事件。默认情况下,每个窗口小部件都是只读的,当双击时,一个窗口小部件被启用,当失去焦点时,它再次是只读的:

try:                        # In order to be able to import tkinter for
    import tkinter as tk    # either in python 2 or in python 3
except ImportError:
    import Tkinter as tk


def on_double_click(widget):
    widget['state'] = 'normal'


def on_lose_focus(widget):
    widget['state'] = 'readonly'


def main():
    root = tk.Tk()
    entries = list()
    for i in range(3):
        entries.append(tk.Entry(root, state='readonly'))
        entries[-1].bind('<Double-Button-1>',
                                lambda e, w=entries[-1]: on_double_click(w))
        entries[-1].bind('<FocusOut>',
                                    lambda e, w=entries[-1]: on_lose_focus(w))
        entries[-1].pack()
    tk.mainloop()


if __name__ == '__main__':
    main()