简体   繁体   中英

PyGTK Hide Cursor

The question is simple how can I hide the cursor on an active window using PyGTK???

Here's a basic app I made to learn this...

#!/usr/bin/env python

import gtk

class app:

  def __init__(self):
    window = gtk.Window(gtk.WINDOW_TOPLEVEL)
    window.set_title("TestApp")
    window.set_default_size(400,200)
    pixmap = gtk.gdk.Pixmap(None, 1, 1, 1)
    color = gtk.gdk.Color()
    cursor = gtk.gdk.Cursor(pixmap, pixmap, color, color, 0, 0)
    window.set_cursor(cursor)
    window.connect("destroy", gtk.main_quit)    
    window.show_all()

app()
gtk.main()

Obviously all it is, is just a window, however when I went to try and run it. I got this error.

AttributeError: 'gtk.Window' object has no attribute 'set_cursor'

After seeing that error I realized gt.Window won't be able to do it, but gtk.gdk.Window will. However how can I convert this basic window so it'll hide the cursor.

As stated in the PyGTK FAQ , you should set the cursor on the realize signal. If you don't wait for the realize signal, the gtk.gdk.window hasn't been created yet , so you can't change the cursor.

So, you can do something like:

#!/usr/bin/env python

import gtk

class app:

  def __init__(self):
    window = gtk.Window(gtk.WINDOW_TOPLEVEL)
    window.set_title("TestApp")
    window.set_default_size(400,200)
    window.connect("realize", self.realize_cb)
    window.connect("destroy", gtk.main_quit)    
    window.show_all()

  def realize_cb(self, widget):
    pixmap = gtk.gdk.Pixmap(None, 1, 1, 1)
    color = gtk.gdk.Color()
    cursor = gtk.gdk.Cursor(pixmap, pixmap, color, color, 0, 0)
    widget.window.set_cursor(cursor)

app()
gtk.main()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM