[英]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
掩碼”。
你確定你啟用了嗎?
在您的代碼中, editor
是Gtk.ScrolledWindow
。 我不認為ScrolledWindow
可以成為焦點。 嘗試連接到TextView
的焦點事件,確保啟用正確的掩碼,如@TinaBrooks指出的那樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.