以编程方式聚焦河马。
时间:2020-03-06 14:57:23 来源:igfitidea点击:
考虑这个使用PyGtk和Hippo Canvas显示可点击文本标签的Python程序。单击文本标签,将其替换为包含标签文本的Hippo CanvasEntry小部件。
import pygtk pygtk.require('2.0') import gtk, hippo def textClicked(text, event, row): input = hippo.CanvasEntry() input.set_property('text', text.get_property('text')) parent = text.get_parent() parent.insert_after(input, text) parent.remove(text) def main(): canvas = hippo.Canvas() root = hippo.CanvasBox() canvas.set_root(root) text = hippo.CanvasText(text=u'Some text') text.connect('button-press-event', textClicked, text) root.append(text) window = gtk.Window() window.connect('destroy', lambda ignored: gtk.main_quit()) window.add(canvas) canvas.show() window.show() gtk.main() if __name__ == '__main__': main()
单击文本标签时创建的CanvasEntry如何在创建时自动聚焦?
解决方案
在CanvasEntry之下,有一个常规的旧gtk.Entry,我们需要在显示焦点后立即请求焦点。这是textClicked
函数的修改版本,它可以完成此操作:
def textClicked(text, event, row): input = hippo.CanvasEntry() input.set_property('text', text.get_property('text')) entry = input.get_property("widget") def grabit(widget): entry.grab_focus() entry.connect("realize", grabit) parent = text.get_parent() parent.insert_after(input, text) parent.remove(text)