Tkinter 程序所选文本未在条目小部件中突出显示

Tkinter 程序所选文本未在条目小部件中突出显示,tkinter,selection,tkinter-entry,Tkinter,Selection,Tkinter Entry,我试图创建一个场景,当用户单击条目小部件时,所有文本都被选中,准备替换。我尝试了以下方法,但没有成功 Python 3.4、tkinter 8.5、Mac OSX # Try to work with older version of Python from __future__ import print_function import sys if sys.version_info.major < 3: import Tkinter as tk from Tkinte

我试图创建一个场景,当用户单击条目小部件时,所有文本都被选中,准备替换。我尝试了以下方法,但没有成功

Python 3.4、tkinter 8.5、Mac OSX

# Try to work with older version of Python
from __future__ import print_function

import sys

if sys.version_info.major < 3:
    import Tkinter as tk
    from Tkinter import ttk
else:
    import tkinter as tk
    from tkinter import ttk

def EA_entry_click_event(event):
    """
    """
    EA_elev_e_1.select_range(0, tk.END)
    EA_elev_e_1.icursor(0)
    EA_elev_e_1.update_idletasks()

    return

root = tk.Tk()

root.title('Test Program')
root_f = tk.Frame(root)

selection = [[965.0, 972.0, 980.0, 988.0, 992.0, 987.0, 978.0, 981.0, 982.0, 981.0, 982.0, 987.0, 1005.0], [958.0, 965.0, 972.0, 977.0, 979.0, 972.0, 969.0, 970.0, 972.0, 973.0, 976.0, 984.0, 1004.0], [946.0, 951.0, 956.0, 959.0, 961.0, 964.0, 966.0, 967.0, 971.0, 975.0, 979.0, 989.0, 999.0], [939.0, 940.0, 946.0, 951.0, 955.0, 960.0, 963.0, 966.0, 969.0, 974.0, 979.0, 984.0, 987.0], [937.0, 939.0, 945.0, 951.0, 954.0, 957.0, 963.0, 964.0, 966.0, 969.0, 972.0, 973.0, 972.0], [929.0, 931.0, 935.0, 944.0, 951.0, 955.0, 957.0, 959.0, 961.0, 962.0, 964.0, 967.0, 973.0], [945.0, 958.0, 959.0, 947.0, 943.0, 946.0, 949.0, 950.0, 954.0, 963.0, 974.0, 982.0, 991.0], [975.0, 990.0, 987.0, 969.0, 948.0, 955.0, 961.0, 958.0, 955.0, 961.0, 969.0, 977.0, 985.0], [991.0, 998.0, 996.0, 977.0, 960.0, 958.0, 979.0, 986.0, 975.0, 964.0, 963.0, 964.0, 969.0], [991.0, 997.0, 1000.0, 991.0, 975.0, 965.0, 969.0, 992.0, 1000.0, 987.0, 987.0, 986.0, 980.0], [992.0, 995.0, 999.0, 1002.0, 997.0, 980.0, 971.0, 980.0, 1001.0, 1006.0, 1008.0, 1005.0, 996.0], [997.0, 1000.0, 1003.0, 1005.0, 1005.0, 997.0, 980.0, 978.0, 996.0, 1011.0, 1015.0, 1015.0, 1010.0], [1001.0, 1007.0, 1010.0, 1010.0, 1009.0, 1004.0, 992.0, 986.0, 995.0, 1007.0, 1014.0, 1017.0, 1022.0]]

root_f.grid()

EA_elev_e_1_var = tk.StringVar()
text1 = str(selection[0][0])
EA_elev_e_1_var.set(text1)

EA_elev_e_1 = tk.Entry(root_f,
                       textvariable=EA_elev_e_1_var,
                       width=8,
                       justify='center')

EA_elev_e_1.bind('<Button-1>', EA_entry_click_event)
EA_elev_e_1.grid()

root.geometry('+150+150')

root.mainloop()
root.quit()
#尝试使用较旧版本的Python
来自未来导入打印功能
导入系统
如果sys.version_info.major<3:
将Tkinter作为tk导入
从Tkinter导入ttk
其他:
将tkinter作为tk导入
从tkinter导入ttk
def EA_entry_click_事件(事件):
"""
"""
EA_elev_e_1.选择范围(0,tk.END)
EA_elev_e_1.icursor(0)
EA_elev_e_1.update_idletasks()
返回
root=tk.tk()
root.title('测试程序')
root\u f=tk.帧(root)
[965.0 0、975.0、975.0、988.0、982.0、987.0、978.0、981.0、982.0、981.0、981.0、981.0、981.0、982.0、982.0、985.0、985.0、975.0、985.0、985.0、985.0、980、985.0、982.0、981.0、982.0、982.0、982.0、982.0、982.0、982.0、982.0 0、982.0、982.0、982.0、982.0、982.0、982.0、987.0、982.0、987.0、982.0 0、987.0、987.0、987.0、987.0、987.0、987.0,989.0999.0],[939.0, 940.0, 946.0, 951.0, 955.0, 960.0, 963.0, 966.0, 969.0, 974.0, 979.0, 984.0, 987.0], [937.0, 939.0, 945.0, 951.0, 954.0, 957.0, 963.0, 964.0, 966.0, 969.0, 972.0, 973.0, 972.0], [929.0, 931.0, 935.0, 944.0, 951.0, 955.0, 957.0, 959.0, 961.0, 962.0, 964.0, 967.0, 973.0], [945.0, 958.0, 959.0, 947.0, 943.0, 946.0, 949.0, 950.0, 954.0, 963.0, 974.0, 982.0, 991.0], [975.0, 990.0, 987.0, 969.0, 948.0, 955.0, 961.0, 958.0, 955.0, 961.0, 969.0, 977.0, 985.0], [991.0, 998.0, 996.0, 977.0, 960.0, 958.0, 979.0, 986.0, 975.0, 964.0, 963.0, 964.0, 969.0], [991.0, 997.0, 1000.0, 991.0, 975.0, 965.0, 969.0, 992.0, 1000.0, 987.0, 987.0, 986.0, 980.0], [992.0, 995.0, 999.0, 1002.0, 997.0, 980.0, 971.0, 980.0, 1001.0, 1006.0, 1008.0, 1005.0, 996.0], [997.0, 1000.0, 1003.0, 1005.0, 1005.0, 997.0, 980.0, 978.0, 996.0, 1011.0, 1015.0, 1015.0, 1010.0], [1001.0, 1007.0, 1010.0, 1010.0, 1009.0, 1004.0, 992.0, 986.0, 995.0, 1007.0, 1014.0, 1017.0, 1022.0]]
根网格()
EA_elev_e_1_var=tk.StringVar()
text1=str(选择[0][0])
EA_elev_e_1_变量集(text1)
EA_elev_e_1=tk.Entry(root_f,
textvariable=EA_elev_e_1_var,
宽度=8,
对齐(中间)
EA_elev_e_1.bind(“”,EA_entry_click_事件)
EA_elev_e_1.grid()
根几何体('+150+150')
root.mainloop()
root.quit()

我已经通过调试器运行了它,它运行了语句。

问题是您的事件发生在默认行为之前,因此您正在做的所有工作都被撤消。有几种方法可以解决这个问题

首先,您可以在
上进行绑定,这将使默认行为在处理绑定之前发生

第二,您可以完全阻止默认绑定的发生。您只需要在回调结束时执行
返回“break”
。如果执行此操作,则需要显式地将焦点设置为条目小部件,因为这是默认绑定所做的事情之一


第三,一个不太常见的解决方案是调整绑定标记,使您的事件发生在默认绑定之后而不是之前。

问题是,您的事件发生在默认行为之前,因此您正在做的所有工作都会被撤消。有几种方法可以解决此问题

首先,您可以在
上进行绑定,这将使默认行为在处理绑定之前发生

第二,您可以完全阻止默认绑定的发生。您只需要在回调结束时执行
返回“break”
。如果执行此操作,则需要显式地将焦点设置为条目小部件,因为这是默认绑定所做的事情之一

第三,一个不太常见的解决方案是调整绑定标记,使事件发生在默认绑定之后,而不是之前