python - 如何禁用输入输入直到双击?

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

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

  • 有什么办法可以阻止用户通过按键输入直到双 点击条目

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

Entry.unbind_all('<Key>')
Entry.unbind_all('<KeyPress>')
Entry.unbind_all('<KeyRelease>')

最佳答案

防止用户在双击之前通过击键进行输入的一种简单方法是通过双击和焦点移出事件来操纵 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()

关于python - 如何禁用输入输入直到双击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49204792/

相关文章:

python - 如何删除 Tkinter OptionMenu 小部件的边框

Python:如何更改设置为索引的 pandas 中的日期

python - 如何将 Python 列表转换为 Python Dataframe?

python - 使用 PySide 并从 QtGui.QColorDialog 获取 "live update"

python - 如何获取/设置菜单小部件高度?

python - 检查 Tkinter Entry 小部件的值

python - 从 Python 多处理访问 MySQL 连接池

python - Psycopg2 : Create a table in a stored procedure Postgres

python - 为什么通过 Homebrew 安装的 Python 不包括 Tkinter

python - 使用Python通过 turtle 引用列表或字典绘制正弦波