簡體   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