繁体   English   中英

Python2 / Pygobject / Gtk3 / Glade3检查TextView焦点

[英]Python2/Pygobject/Gtk3/Glade3 check TextView focus

我正在使用Python2.7和Gtk3设计一个文本编辑器应用程序,我不太清楚如何设置一个处理程序来检查主TextView当前是否处于焦点,所以我可以禁用菜单项(例如编辑 - >复制等)。

为了创建选项卡式文本编辑器,我使用Gtk.Notebook作为主体,每次激活File - > New时,我创建一个新的ScrolledWindow和TextView以在文本编辑器中创建一个新选项卡:

def on_imagemenuitemNew_activate(self, *args):
  editor = Gtk.ScrolledWindow()
  editor.add(Gtk.TextView())
  editor.set_shadow_type(Gtk.ShadowType.IN)
  editor.show_all()
  #The instance of Gtk.Notebook is passed to the handler as user data in args[0]
  args[0].append_page(editor, Gtk.Label('untitled'))

这工作正常,但如果我尝试使用:

editor.connect('focus-in-event', self.on_editor_focus_in_event)

在块内,然后我的处理程序从未注册:

def on_editor_focus_in_event(self, *args):
  print 'Focused!'

我怀疑这个问题可能是因为每个editor实例看起来都是相同的,但这确实让我很难过。 原谅邋code的编码,我昨天才开始学习GTK,并且Pygobject / Gtk3没有很好的记录。

我只能猜测,但文档说“要接收此信号,与窗口小部件关联的GdkWindow需要启用GDK_FOCUS_CHANGE_MASK掩码”。

你确定你启用了吗?

在您的代码中, editorGtk.ScrolledWindow 我不认为ScrolledWindow可以成为焦点。 尝试连接到TextView的焦点事件,确保启用正确的掩码,如@TinaBrooks指出的那样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM