PyGTK Скрыть курсор - PullRequest
3 голосов
/ 16 июля 2011

Вопрос прост: как мне скрыть курсор на активном окне, используя PyGTK ???

Вот базовое приложение, которое я сделал, чтобы изучить это ...

#!/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()

Очевидно, что это всего лишь окно, но когда я попытался его запустить. Я получил эту ошибку.

AttributeError: объект 'gtk.Window' не имеет атрибута 'set_cursor'

Увидев эту ошибку, я понял, что gt.Window не сможет это сделать, но gtk.gdk.Window сделает это. Однако как я могу преобразовать это основное окно, чтобы оно скрывало курсор.

1 Ответ

6 голосов
/ 16 июля 2011

Как указано в FAQ по PyGTK , вы должны установить курсор на сигнал realize.Если вы не ждете сигнала realize, gtk.gdk.window еще не создан , поэтому вы не можете изменить курсор.

Итак, вы можете сделать что-то вроде:

#!/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()
...