PyGTK 隐藏光标

2 投票
1 回答
3403 浏览
提问于 2025-04-16 21:40

这个问题很简单,我想知道如何在使用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'这个属性

看到这个错误后,我意识到gtk.Window无法做到这一点,但gtk.gdk.Window可以。不过,我该如何把这个基本窗口转换成可以隐藏光标的呢?

1 个回答

5

根据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()

撰写回答