프로그래밍 방식으로 Hippo.canvasentry에 집중합니까?
문제
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)
제휴하지 않습니다 StackOverflow