有没有一种有效的方法来判断是否在 Tkinter 文本小部件中选择了文本?

发布于 2024-10-07 10:46:47 字数 411 浏览 3 评论 0原文

描述 Tkinter 文本小部件的页面上,指出 '选择是一个名为 SEL(或“sel”)的特殊标签,对应于当前选择。您可以使用常量 SEL_FIRST 和 SEL_LAST 来引用选择。如果没有选择,Tkinter 会引发 TclError 异常。

我的问题:除了愚弄异常之外,是否有更有效的方法来判断文本小部件中是否有选择,如下面的代码?

seltext = None
try:
   seltext = txt.get(SEL_FIRST, SEL_LAST)
except TclError:
   pass

if seltext:
   # do something with text

On this page describing the Tkinter text widget, it's stated that
'The selection is a special tag named SEL (or “sel”) that corresponds to the current selection. You can use the constants SEL_FIRST and SEL_LAST to refer to the selection. If there’s no selection, Tkinter raises a TclError exception.'

My question: is there a more efficient way to tell if there is a selection in a Text widget besides fooling with exceptions, like the below code?

seltext = None
try:
   seltext = txt.get(SEL_FIRST, SEL_LAST)
except TclError:
   pass

if seltext:
   # do something with text

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

忆沫 2024-10-14 10:46:47

您可以向小部件询问“sel”标签包含的文本范围。如果没有选择,范围的长度将为零:

if txt.tag_ranges("sel"):
    print "there is a selection"
else:
    print "there is no selection"

You can ask the widget for the range of text that the "sel" tag encompases. If there is no selection the range will be of zero length:

if txt.tag_ranges("sel"):
    print "there is a selection"
else:
    print "there is no selection"
塔塔猫 2024-10-14 10:46:47

这是检查是否选择了指定位置的方法。

if "sel" in myTextWidget.tag_names(INSERT): #use 'not in' to see if it's not selected
    print("INSERT to 'insert+1c' is selected text!");

我不知道为什么他们不让你在那里放第二个索引。我也不知道这对处理器来说比你的版本更有效,但据我所知,它似乎更标准。

Here's a way to check if a specified location is selected.

if "sel" in myTextWidget.tag_names(INSERT): #use 'not in' to see if it's not selected
    print("INSERT to 'insert+1c' is selected text!");

I don't know why they don't let you put a second index in there. I also don't know that this is any more efficient for the processor than your version, but it does seem to be more standard from what I can tell.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文