PyQt5のQTabWidget
には、特定のタブを取得してアクティブなタブにするために使用できるメソッドsetCurrentIndex
があります。 (Qt Designerで設定した)タブ名でインデックスを作成する方法が見つからないようです。代わりに名前でインデックスを作成する方法(直接または間接)はありますか?
タブ名は、タブのページとして設定されたウィジェットのオブジェクト名になります。タブが追加されると、ページはタブウィジェットの内部スタックウィジェットに自動的に再ペアレント化されます。つまり、次のようなページへの参照を取得できます。
page = tabwidget.findChild(QWidget, tabname)
そして、このようなインデックスを取得します:
index = tabwidget.indexOf(page)
または、次のように現在のタブを名前で直接設定します。
tabwidget.setCurrentWidget(tabwidget.findChild(QWidget, tabname))
別の方法として、タブインデックスを追加するときにそれを覚えておくことです。
index = tabWidget.addTab(myWidget)
tabWidget.setCurrentIndex(index)
Tab_nameを指定したメソッドは、名前がtab_nameと一致するタブのインデックスのリストを返します。
def get_indices(tab_name):
return [index for index in range(tab_widget.count())
if tab_name == tab_widget.tabText(index)]
この関数でインデックスを見つけたら、標準のPyQtメソッドを使用できます。
これを行う最善の方法ではありませんですが、場合によっては役立つことがあります。