2017-12-27 22 views
2

定義されたテキストを持つgtk.notebookにタブがあるかどうかをチェックする機能はありますか?関数get_menu_label_text()を見つけましたが、送信された子からタブのテキストを返します。gtk.notebookに定義されたテキストのタブが存在するかどうかをチェックする+ gtk3

既に作成済みのタブがあるかどうかを確認したいので、もう一度作成する必要はありません。

本当に簡単ですが、適切な解決策を見つけることができません。

答えて

1

開発者がノートブックに何が入っているかを知っておく必要がある理由がわからないため、「追跡可能」になります。

はとにかく、get_n_pages()とページ数を取得し、forループでget_nth_page()とn個のページの子を取得し、Gtk.Notebook get_tab_label_text(child)メソッドを呼び出すように、いくつかのアプローチがあります。

もう1つの方法は、Gtk.Container foreachメソッド(Gtk.NotebookはGtk.Containerから継承)を使用し、すべての子に反復処理を行い、タブラベルテキストを取得して検索テキストと比較することです。

次の非常に単純な例では、参照されていないテキストラベルを持つ2ページのノートブックを作成し、ノートブックタブのラベルにラベルがあるかどうかを確認します。

例:

import gi 
gi.require_version('Gtk', '3.0') 
from gi.repository import Gtk 

class MyWindow(Gtk.Window): 

    def __init__(self): 
     Gtk.Window.__init__(self, title="Simple Notebook Example") 
     self.set_border_width(3) 

     self.notebook = Gtk.Notebook() 
     self.add(self.notebook) 

     self.page1 = Gtk.Box() 
     self.page1.set_border_width(10) 
     self.page1.add(Gtk.Label('This is Gtk.Notebook Page X')) 
     self.notebook.append_page(self.page1, Gtk.Label('Page X')) 

     self.page2 = Gtk.Box() 
     self.page2.set_border_width(10) 
     self.page2.add(Gtk.Label('This is Gtk.Notebook Page Y')) 
     self.notebook.append_page(self.page2, Gtk.Label('Page Y')) 

    def check_exists_tab_with_label(self, label): 
     self.notebook.foreach(self.check_label_for_child, label) 

    def check_label_for_child(self, widget, label): 
     if (self.notebook.get_tab_label_text(widget) == label): 
      print ("FOUND") 

win = MyWindow() 
win.connect("delete-event", Gtk.main_quit) 
win.show_all() 
win.check_exists_tab_with_label('Page Y') 
Gtk.main() 
+1

うんあなたは正しいが、そのための簡単な解決策がある場合、私は思っていました。 "foreach"メソッドは非常に素晴らしいと多くの他のアプローチにもあまりにも、おかげです! –

関連する問題