编程聚焦河马。画布入口?

2024-09-30 08:34:51 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑这个Python程序,它使用PyGtk和Hippo Canvas显示可单击的文本标签。单击文本标签将替换为包含标签文本的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()

如何在创建时自动聚焦文本标签时创建的画布条目?在


Tags: text文本importgtkinputmainroot标签
1条回答
网友
1楼 · 发布于 2024-09-30 08:34:51

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)

相关问题 更多 >

    热门问题