pygtk覚え書き gtk.Entry
gtk.Entryがクリックされた場合に、自動的にEntry内のテキストを全て選択する方法。
以下のようにします。
下記のスクリプトを実行すると、2つのEntryをもつウインドウが表示されます。
それぞれのEntryにテキストを入力したあと、Entryをクリックすると、入力されているテキストが
選択されるのが確認できます。
# -*- coding : utf-8 -*- import sys import pygtk if sys.platform != 'win32': pygtk.require('2.0') import gtk class simpleWindow: def __init__(self): self.wind = gtk.Window(gtk.WINDOW_TOPLEVEL) self.wind.set_border_width(2) self.wind.set_size_request(400, 300) self.wind.connect('delete_event', self.__on_quit) vbox = gtk.VBox() entry = gtk.Entry() entry.connect('event', self.__on_entry_clicked) vbox.pack_start(entry) entry = gtk.Entry() entry.connect('event', self.__on_entry_clicked) vbox.pack_start(entry) self.wind.add(vbox) self.wind.show_all() gtk.main() def __on_entry_clicked(self, widget, event, data=None): if event.type == gtk.gdk.BUTTON_RELEASE: widget.select_region(0, -1) def __on_quit(self, widget, event=None): print '-- quit --' gtk.main_quit() return False def main(): wind = simpleWindow() if __name__ == '__main__': main()
上記のサンプルのポイントとなるのは
・gtk.Entryのクリック操作をハンドリングするには'event'シグナルにconnectする。
・eventシグナル発生時に自分の期待するイベント(今回の場合にはMouseUP)かどうか判定し、処理を行う。
・gtk.Entryのテキストを選択するには、select_region()を使用する。
といったところです。