在Pygtk应用程序中更改光标类型

问题描述

在我的应用程序中,我想在鼠标离开并输入事件时更改所有按钮的光标类型。为此,我想编写通用代码,而不是用适当的信号连接每个按钮。 这是它的示例代码
import gtk

class Button(gtk.Button):

   __gsignals__ = {
    \"leave\" : \"override\",\"enter\" : \"override\"
    }

   def do_leave(self):
      self.window.set_cursor(None)

   def do_enter(self):
      print \"Enter\"
      self.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.HAND2))

class EventBox:

  def __init__(self):
    window = gtk.Window()
    vBox = gtk.VBox()
    label = gtk.Label(\"Change Cursor\")
    vBox.pack_start(label,False,False)
    bt = gtk.Button(\'Ok\')
    bt.connect(\'clicked\',self.on_click,window)
    vBox.pack_start(bt,False)
    eventBox = gtk.EventBox()
    window.set_size_request(400,400)
    window.add(eventBox)
    eventBox.add(vBox)
    window.show_all()

  def on_click(self,widget,window,*args):
    print \"On click\"
    window.destroy()
    NextWin()

  def mouse_enter_event(self,*args):
    print \"Enter\"
    widget.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.HAND2))

class NextWin:
  def __init__(self):
    window = gtk.Window()
    vBox = gtk.VBox()
    label = gtk.Label(\"Change Cursor\")
    vBox.pack_start(label,False)
    bt = gtk.Button(\'Ok\')
    vBox.pack_start(bt,False)
    eventBox = gtk.EventBox()
    window.connect(\"destroy\",lambda w: gtk.main_quit())
    window.set_size_request(400,400)
    window.add(eventBox)
    window.set_name(\'Next Window\')
    window.set_title(\'Next Window\')
    eventBox.add(vBox)
    window.show_all()

gtk.Button = Button
EventBox()
gtk.main()
上面的代码适用于gtk按钮,但不适用于林间空地文件按钮。 林间空地文件按钮可能是什么问题? 我也在寻找更合适的方法来更改游标类型。 有人对以上代码有任何建议或更正吗?     

解决方法

        我知道这里已经坐了一段时间了,所以只是想一想...也许可以在Glade之外重建您的GUI(或某些模型)。确实不是很困难,而且文档很棒。 然后,尝试连接鼠标光标更改代码,然后查看是否有效。