我正在使用 python 3.6 开发 GUI,但我需要用户双击 tkinter 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/