我最近决定编写我的第一个Gtk3应用程序,而我遇到加速器问题。我知道如何添加加速器,但他们只是拒绝使用某些键,如rightarrow和leftarrow。这是一个简单的程序,当按下rightarrow时应该(但不会)破坏GtkWindow。但它适用于大多数其他按钮。
from gi.repository import Gtk, Gdk
keyval= 65363
w=Gtk.Window()
menubar= Gtk.MenuBar()
filemenu= Gtk.Menu()
accels= Gtk.AccelGroup()
w.add_accel_group(accels)
file= Gtk.MenuItem.new_with_mnemonic('_File')
new= Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_NEW, None)
new.add_accelerator('activate', accels, keyval, Gdk.ModifierType(0), Gtk.AccelFlags(1))
file.set_submenu(filemenu)
filemenu.append(new)
new.connect('activate', lambda a: w.destroy())
menubar.append(file)
w.add(menubar)
w.connect('destroy', Gtk.main_quit)
w.show_all()
Gtk.main()
然后,另一方面,还有另一个问题:如果小部件具有键盘焦点(例如GtkEntry)并按下加速键组合,则执行加速器操作 - 但小部件不接收按键。有没有办法防止这种情况,除了在窗口小部件聚焦时从窗口中删除AccelGroup?