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

2024-09-29 09:28:36 发布

您现在位置:Python中文网/ 问答频道 /正文

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

下面是一个示例代码。在

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文件按钮有什么问题?在

我也在寻找更合适的方法来改变光标类型。 是否有人对以上代码有任何建议或更正?在


Tags: 代码selffalsegtkdefbuttonwindow按钮
1条回答
网友
1楼 · 发布于 2024-09-29 09:28:36

我知道这已经有一段时间了,所以只是一个想法…也许重建你的图形用户界面(或一些模型)外的格拉德。这真的不是很难做到,而且文档非常棒。在

然后,尝试连接鼠标光标更改代码,看看是否有效。在

相关问题 更多 >