[pygtk] Removing the cursor
Mike Bernson
mike at mlb.org
Mon Aug 21 07:40:01 WST 2006
It look like I cannot do what I want.
That is remove the insert cursor from an entry widget that can get the
focus but does not allow editing. I want to be able to stop off while
tabbing thought the screen at the entry widget but attach signal handler
to grab the input character and use them for something else other then
altering the display. When I am doing this I have a message in the text
area tilling the use what to do.
I have it all working except removing the insert cursor. Since it is not
a window/X11 cursor but is draw by the entry using a helper function in
the style that I do not have access to I was looking for a way around
having the insert cursor show up.
Entry widget uses gtk_draw_insertion_cursor inside the gtkstyle. I see
no way of accessing this function/method from python.
Here is the header from that function:
/**
* gtk_draw_insertion_cursor:
* @widget: a #GtkWidget
* @drawable: a #GdkDrawable
* @area: rectangle to which the output is clipped, or %NULL if the
* output should not be clipped
* @location: location where to draw the cursor (@location->width is
ignored)
* @is_primary: if the cursor should be the primary cursor color.
* @direction: whether the cursor is left-to-right or
* right-to-left. Should never be #GTK_TEXT_DIR_NONE
* @draw_arrow: %TRUE to draw a directional arrow on the
* cursor. Should be %FALSE unless the cursor is split.
*
* Draws a text caret on @drawable at @location. This is not a style
function
* but merely a convenience function for drawing the standard cursor shape.
*
* Since: 2.4
**/
void
gtk_draw_insertion_cursor (GtkWidget *widget,
GdkDrawable *drawable,
GdkRectangle *area,
GdkRectangle *location,
gboolean is_primary,
GtkTextDirection direction,
gboolean draw_arrow)
Edward Catmur wrote:
> On Sun, 2006-08-20 at 18:10 -0400, Mike Bernson wrote:
>> I set use the following to make the widget uneditable.
>>
>> widget.props.editable = False
>>
>> widget is gtk.Entry widget has an Editable interface and this should set
>> the widget to non-editable.
>>
>> The entry widget does not allow any edit which I thought should also
>> turn off the insert cursor. This is not the case
>>
>> Here is a simple program that show the problem
>>
>> import gtk
>>
>> window = gtk.Window()
>> entry = gtk.Entry()
>> entry.props.editable = False
>> window.add(entry)
>> window.show_all()
>>
>> gtk.main()
>
> Ah, yeah. Use
>
> entry.props.editable = False
> entry.props.can_focus = False
> entry.props.has_focus = False
>
> Alternatively if you want to prevent selecting text and copying the
> entry content, just use
>
> entry.props.sensitive = False
>
> However the latter is not to be preferred; allowing users to select and
> copy text is more friendly.
>
>
> Ed
>
More information about the pygtk
mailing list