정의 된 텍스트가있는 gtk.notebook에 Tab이 있는지 확인하는 기능이 있습니까? 방금 "get_menu_label_text()"함수를 찾았지만 전송 된 자식의 탭 텍스트를 반환합니다.gtk.notebook에 정의 된 텍스트가있는 탭이 있는지 확인하십시오. + gtk3
이미 생성 된 탭이 있는지 알아 보려면 다시 만들 필요가 없습니다.
정말 간단하지만 적절한 해결책을 찾을 수 없습니다.
정의 된 텍스트가있는 gtk.notebook에 Tab이 있는지 확인하는 기능이 있습니까? 방금 "get_menu_label_text()"함수를 찾았지만 전송 된 자식의 탭 텍스트를 반환합니다.gtk.notebook에 정의 된 텍스트가있는 탭이 있는지 확인하십시오. + gtk3
이미 생성 된 탭이 있는지 알아 보려면 다시 만들 필요가 없습니다.
정말 간단하지만 적절한 해결책을 찾을 수 없습니다.
개발자가 노트북에 무엇이 들어 있는지 알 수 있어야하는 이유가 확실하지 않으므로 "추적 가능"이됩니다.
어쨌든, get_n_pages()
와 페이지 수를 점점 for 루프에서 get_nth_page()
로 N 페이지의 아이를 가져오고 Gtk.Notebook get_tab_label_text(child)
메소드를 호출과 같은 몇 가지 방법이 있습니다.
또 다른 옵션은 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()
그래 당신 말이 맞아,하지만에 대한 쉬운 해결책이 있는지 궁금 해서요. "foreach"메서드는 매우 훌륭하고 많은 다른 접근법에도 적합합니다. 덕분에 많이! –