Python 在布局容器中,如何知道是否按下了键?

Python 在布局容器中,如何知道是否按下了键?,python,gtk,Python,Gtk,我的问题是:在Python脚本中,我使用以下代码创建了一个窗口: class Layout(Gtk.Window): def __init__(self): Gtk.Window.__init__(self, title="Ricerca partite") self.connect("key-press-event",self.GetKeypress) self.set_default_size(265, 437) sel

我的问题是:在Python脚本中,我使用以下代码创建了一个窗口:

class Layout(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self, title="Ricerca partite")
        self.connect("key-press-event",self.GetKeypress)
        self.set_default_size(265, 437)
        self.move(700,300)

    # other instructions
如果按下了“+”、“-”或“Return”键中的一个,我必须执行相应的操作,否则什么也不做。 如何检查其中一个键是否已按下?“GetKeypress()”函数应该如何编写?

您可以尝试此操作(假设您已导入
gtk
gdk
):

我认为,既然您希望在按下某个键后执行相应的操作,那么您应该将
self.connect(“按键事件”,self.GetKeypress)
更改为
self.connect(“按键释放事件”,self.GetKeypress)


您可以在.

中找到有关此问题的更多信息。Gdk模块导入成功。我使用Python3.6,我必须导入Gdk而不是Gdk。但执行命令“keyval_name=Gtk.gdk.keyval_name(event.keyval)”会导致错误:文件“/usr/lib/python3.6/site-packages/gi/overrides/_u-init_uuuuuuuuuuuu.py”,getattr-return-getattr(self.\u-introspection_-module,name)文件“/usr/lib/python3.6/site-packages/gi/module/gi/gi/module.py”,getattr-self.\uuuuuuuuuu,name))AttributeError:'gi.repository.Gtk'对象没有属性'gdk',我尝试使用gdk和gdk,问题出在哪里?您的导入似乎有一些问题,需要解决。你们进口过gtk吗?我必须导入以下模块:
import gtk
import gtk.gdk
import gobject
import pygtk
。OP使用的是gtk3(
from gi.repository import gtk
),而您的答案是使用过时的gtk2(
import gtk
)@Ave您必须使用
从gi.repository导入Gdk
keyval_name=Gdk.keyval_name(event.keyval)
@aran Fey导入是可以的,但现在错误是:GetKeypress keyval_name=Gdk.keyval_name(event.keyval)AttributeError:“布局”对象没有属性“keyval”
def GetKeypress(self,event):
    keyval_name = gtk.gdk.keyval_name(event.keyval)
    if keyval_name == '+' or keyval_name == '-' or keyval_name == 'Return':
        #continue your code here