Changes

Jump to navigation Jump to search
New page: === How do I copy and paste text from GTK widgets? === According to the [http://www.pygtk.org/pygtk2tutorial/ch-NewInPyGTK2.2.html PyGtk Tutorial], widgets of type Entry, SpinButton and T...
=== How do I copy and paste text from GTK widgets? ===

According to the [http://www.pygtk.org/pygtk2tutorial/ch-NewInPyGTK2.2.html PyGtk Tutorial], widgets of type Entry, SpinButton and TextView have some built in functionality to cut, copy and paste text to and from a clipboard. In particular, these widgets implement the [http://www.pygtk.org/docs/pygtk/class-gtkeditable.html Editable] interface that has standard calls for clipboard functionality.

The code below creates a simple gtk.Entry widget where text can be entered. Right below this widget, there is one button to copy text inside of the entry and another to paste text from the clipboard in to the Entry widget. In addition to using the "Copy" and "Paste" buttons, users can also use '''CONTROL-X''', '''CONTROL-C''', and '''CONTROL-V''' to cut, copy and paste text from widgets that implement the Editable interface.


<pre>
#### Method: _createCanvas, creates a top level UI canvas object for this activity
def _createCanvas(self):
top_container = Notebook()

#Create pages for the notebook
first_page = gtk.VBox()
second_page = gtk.VBox()
third_page = gtk.Frame()

#FOR FIRST PAGE:: Create a text entry box with two buttons for copy and paste right below it.
first_page_entry_box = gtk.VBox(homogeneous=False, spacing=5)
button_row = gtk.HBox()
#### Create the actual gtk.Entry for text entry
self.clipInput = gtk.Entry(max=0)
self.clipInput.set_width_chars(100)
#### Create the copy button and assign callback
copyClipInput = gtk.Button(label='Copy Text')
'''copyClipInput.connect("clicked", self._copyClipInput_cb, None)'''
button_row.pack_start(copyClipInput, expand=False, fill=False)
#### Create the paste button and assign callback
pasteClipInput = gtk.Button(label='Paste Text')
'''pasteClipInput.connect("clicked", self._pasteClipInput_cb, None)'''
#### Put everything together in the UI
button_row.pack_start(copyClipInput, expand=False, fill=False)
button_row.pack_start(pasteClipInput, expand=False, fill=False)
button_row.pack_start(gtk.Label(''), expand=True, fill=True) #for appearance purposes
first_page_entry_box.pack_start(self.clipInput, expand=False, fill=False)
first_page_entry_box.pack_start(button_row, expand=False, fill=False)
first_page.pack_start(first_page_entry_box)
first_page.pack_start(gtk.Label(''), expand=True, fill=True) #for appearance purposes



</pre>
Anonymous user

Navigation menu