ttk.Entry.select_range()在Button中有效,但在ttk.Button中无效?
有人能解释一下为什么entry.select_range()在普通按钮(Button)上能用,但在ttk.Button上就不行吗?
from tkinter import *
from tkinter import ttk
root = Tk()
entry = ttk.Entry(root)
entry.pack()
#This works
button = Button(root, text="Select your text", command=lambda:
entry.select_range(0, END))
#but this doesn't
##button = ttk.Button(root, text="Select your text", command=lambda:
## entry.select_range(0, END))
button.pack()
root.mainloop()
1 个回答
2
这段内容来自于一个Google 讨论组,提到:
不过,在Windows系统上,只有当输入框获得焦点时,选中的内容才会变得可见。
另外,这个关于ttk按钮的页面也提到:
默认情况下,ttk.Button会被包含在焦点遍历中……如果想要把这个控件从焦点遍历中移除,可以使用takefocus=False。
所以,你需要在ttk.Button
中添加takefocus选项。
button = ttk.Button(root, takefocus=False, text=...)