ttk.Entry.select_range()在Button中有效,但在ttk.Button中无效?

1 投票
1 回答
684 浏览
提问于 2025-04-18 15:21

有人能解释一下为什么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=...)

撰写回答