gpt4 book ai didi

python - 如何在 Matplotlib TextBox 小部件中设置光标位置?

转载 作者:行者123 更新时间:2023-12-01 09:13:44 24 4
gpt4 key购买 nike

如何强制光标出现在 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之前需要绘制(渲染)图形吗?

如果我注释掉失败的行并取消注释最后一行,我不会收到运行时错误,但光标不会出现在任何地方,更不用说出现在我想要的文本末尾了。

最佳答案

为了在显示图形时执行一些代码,您可以使用单次计时器。该计时器的回调可能包含为 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)

def autofocus():
text_box.cursor_index = len(initial_text)
text_box._rendercursor()
text_box.begin_typing(None)


timer = plt.gcf().canvas.new_timer()
timer.single_shot = True
timer.add_callback(autofocus)
timer.start()

plt.show()

运行此程序,您可以在图形打开后直接开始输入。

关于python - 如何在 Matplotlib TextBox 小部件中设置光标位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51424350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com