python - 如何在 Matplotlib TextBox 小部件中设置光标位置?
问题描述
如何强制光标出现在TextBox
小部件中文本的末尾?我希望能够创建一个TextBox
小部件,使其立即获得焦点并将光标设置为出现在其中的文本末尾。
以下代码...
import matplotlib.pyplot as plt
from matplotlib.widgets import TextBox
axbox = plt.axes([0.4, 0.5, 0.2, 0.075])
initial_text = "Change me"
text_box = TextBox(axbox, '', initial=initial_text)
text_box.position_cursor(len(initial_text)) # RuntimeError!
plt.show()
#text_box.position_cursor(len(initial_text))
...调用失败position_cursor
:
RuntimeError: Cannot get window extent w/o renderer
这是因为在调用之前需要绘制(渲染)图形position_cursor
吗?
如果我注释掉失败的行并取消注释最后一行,我不会收到运行时错误,但光标不会出现在任何地方,更不用说我想要的文本末尾了。
解决方案
因此,该position_cursor
函数似乎x
从图的左侧开始以像素数为单位。对您的用例没有用。
但是,我们可以从该函数中获取几个部分并使用它们。
如果我在 ipython 会话中运行,并使图形交互(plt.ion()
在您的模块导入之后),并使用
text_box.cursor_index = len(initial_text)
text_box._rendercursor()
这个对我有用。
推荐阅读
- vb.net - ReadLine 似乎在轮流连接和发送,导致问题
- python-3.x - 使用 Python 进行端口扫描
- python - 根据python中的条件添加前导零
- ejabberd - 为什么 ejabberdctl 对 check_password 命令没有响应?
- python - 使用 ElementTree 在 Python 中按元素解析 XML
- angular - 当我只有一个字段时,需要表单来检查所有字段以进行验证
- office365 - Outlook Web Addins-office 365 OWA getCallbackTokenAsync 返回“失败”,但在 OWA 中最近的 UI 更新后与 Outlook 客户端正常工作
- python - 如何通过 plt.arrow 绘制两侧分开的箭头?
- java - 安装JDK后,无法运行.jar
- azure - 如何在 Azure DevOps 中导入任务组