Изменить тип курсора в приложении Pygtk - PullRequest
1 голос
/ 13 июня 2011

В моем приложении я хочу изменить тип курсора всех кнопок, при отпускании мыши и вводить события. для этого я хочу написать обобщенный код вместо того, чтобы соединять каждую кнопку с соответствующим сигналом.

вот пример кода для него.

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, 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, widget, *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, False)
    bt = gtk.Button('Ok')
    vbox.pack_start(bt, False, 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. в чем может быть проблема с кнопками glade file?

Я также ищу более подходящий способ изменить тип курсора. У кого-нибудь есть предложения или исправления по вышеуказанному коду?

1 Ответ

0 голосов
/ 22 октября 2011

Я знаю, что это было здесь некоторое время, так что просто мысль ... возможно, перестроить ваш графический интерфейс (или какой-то макет) за пределами Glade. Это действительно не очень сложно, а документация просто фантастическая.

Затем попробуйте подключить коды изменения курсора мыши и посмотрите, работает ли он.

...