我正在使用python 3.6开发GUI但是我需要用户双击tkinter finish();
小部件以允许输入(以防止意外修改字段),而不仅仅是按任意键输入文字。
Entry
?我首先尝试使用以下方法覆盖事件以取消绑定键击,但它们都没有工作,因此尚未实现新绑定(双击)的重新定义。
Entry
答案 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()