我目前正在开发一个 Tkinter 应用程序,它使用 TextWidget 作为主要小部件。
当我尝试获取当前选择时,出现错误,但我不明白为什么...
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1410, in __call__
return self.func(*args)
File "C:\Users\Lina\Documents\Programmation\VPE project.py", line 502, in rechercher
texte=code_text.selection_get()
File "C:\Python27\lib\lib-tk\Tkinter.py", line 626, in selection_get
return self.tk.call(('selection', 'get') + self._options(kw))
TclError: PRIMARY selection doesn't exist or form "STRING" not defined
谢谢。
编辑:我知道它为什么不起作用,我绑定(bind)到 Ctrl-F,但它已经绑定(bind)在 TextWidgets 中(默认情况下,它与 LeftArrow 做的事情完全一样)。 现在的问题是,我该如何摆脱它?
最佳答案
该错误只是告诉您未选择任何内容。这不是一个错误本身,只是一种表达“没有什么可得到”的方式。这可能是正确的,或者您可能选择了某些内容但未将其导出到“选择”。如果您将小部件上的 exportselection
选项设置为 true,则您选择的任何内容都应该复制到选择中。如果不是,则说明您的问题中没有足够的代码来回答原因。
但是,要回答“如何获取在小部件中选择的文本”的问题:在文本小部件中选择的文本具有标签“sel”。您可以使用 textwidget.get('sel.first', 'sel.last')
对标签使用 get
方法比使用 selection_get
更正确,因为有可能在小部件中没有任何选择但仍然有 selection_get
返回一些东西(例如:返回任何其他小部件已经导出到选择)
关于python - Tkinter 文本 selection_get() 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7090346/