Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 防止/强制执行Gtk3加速器_Python_Gtk_Gtk3_Accelerator - Fatal编程技术网

Python 防止/强制执行Gtk3加速器

Python 防止/强制执行Gtk3加速器,python,gtk,gtk3,accelerator,Python,Gtk,Gtk3,Accelerator,我最近决定写我的第一个Gtk3应用程序,我有加速器的问题。我知道如何添加加速器,但它们只是拒绝使用某些键,如rightarrow和leftarrow。这是一个简单的程序,按下rightarrow时应该(但不会)销毁GtkWindow。不过,它适用于大多数其他按钮 from gi.repository import Gtk, Gdk keyval= 65363 w=Gtk.Window() menubar= Gtk.MenuBar() filemenu= Gtk.Menu() accels= G

我最近决定写我的第一个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之外,还有什么方法可以防止这种情况发生吗?

gtk3可能不允许箭头作为加速度。我在别处读到过,gtk2不允许这样做。当时的答案是,它与用于widget焦点的箭头有关。