Python 在布局容器中,如何知道是否按下了键?
我的问题是:在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
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