gpt4 book ai didi

python - Gtk3 with Python, TextView 上升多个 'mark-set' 信号

转载 作者:太空宇宙 更新时间:2023-11-04 06:33:55 25 4
gpt4 key购买 nike

考虑以下示例代码,它将 TextView 放入窗口并注册 mark-set 事件:

#!/usr/bin/env python3

from gi.repository import Gtk

win = Gtk.Window(title='test')
text_view = Gtk.TextView()

def test (*args):
print('test!')

win.add(text_view)
text_view.get_buffer().connect('mark-set', test)

win.connect('delete-event', Gtk.main_quit)
win.show_all()
Gtk.main()

如果我启动它,然后单击可视化的 TextView 一次,我会多次获得调试输出:

$ ./test.py 2>/dev/null
test!
test!
test!
test!

你知道为什么会这样吗?有办法避免吗?

最佳答案

我不知道为什么会发生这种情况,但我发现了一些东西可以帮助您理解,或者使用它来防止处理程序中的重复操作,使用 mark.get_name()。我在这里更改了您的代码,键入一些文本并使用它(选择一些文本,单击某处,...)

#!/usr/bin/env python3
import time
from gi.repository import Gtk

win = Gtk.Window(title='test')
text_view = Gtk.TextView()

def mark_set(buf, itr, mark):
### mark.get_name() ==> 'selection_bound' | 'insert' | None
print('Time: %.2f, Mark Name: %s'%(time.time()%100, mark.get_name()))

win.add(text_view)
text_view.get_buffer().connect('mark-set', mark_set)

win.connect('delete-event', Gtk.main_quit)
win.show_all()
Gtk.main()

关于python - Gtk3 with Python, TextView 上升多个 'mark-set' 信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13781496/

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