Python

Python PyTouchBar MacのTkinter(TK)/PyGameのアプリでTouch Barに対応してみる(4) TouchBarItems(3)

タッチバーにアイテムを追加するには、PyTouchBar.set_touchbar([item1, item2, …])という関数を使う。
アイテムは全てPyTouchBar.TouchBarItemsで定義されており、追加できるアイテムを以下に示す。

SegmentedControls

セグメント化されたコントロールとは、通常のボタンのように動作したり、1 つを選択したり、複数を選択したりすることができるボタンのグループ。
セグメント化されたコントロールを定義するには、その項目の複雑さに応じて2つの方法がある。

簡単な方法:文字列を使う

コントロールが基本的なもので、テキストが含まれているだけの場合に SegmentedControls を定義するのに最適な方法。

# controls ([String and/or SegmentedControls.Control]) : SegmentedControlsのコントロール
# type(SegmentedControls.Type):セグメント化されたコントロールのタイプ(一度に一つのコントロールを選択する、一度に複数のコントロールを選択する、シンプルなボタン)
# action (SCを引数とする関数) : ユーザーがコントロールを押したり選択したりしたときに呼び出される関数
sc = PyTouchBar.TouchBarItems.SegmentedControls(controls = ["Hello","World","Foobar!"])
sc.selectedItems() -> [SegmentedControls.Control] : 呼び出されると、選択されたすべてのコントロールを含むリストを返す。

複雑な方法:コントロールのリスト

表示するコントロールが単なるテキスト表示よりも複雑な場合 (画像があったり、幅が定義されているなど) は、SegmentedControls.Control インスタンスを作成する必要がある。(注意: SegmentedControls は Control インスタンスと文字列の両方で定義できる)

# title (String or None,) : ボタンに表示される文字列
# image (String or None) : ボタンに表示される画像ファイルへのパス
# width (Int or None) : コントロールの幅(px単位)
# enabled (Bool) : コントロールが選択可能か否かを示す。Falseの場合、ボタンはグレーになる
# selected (Bool, get & set) : コントロールの選択状態を表す
# image_scale (ImageScale) : 画像のスケーリングを指定。画像のスケールは定数(PyTouchBar.ImageScale)で定義されている。
control1 = PyTouchBar.TouchBarItems.SegmentedControls.Control(title = "Hello")
control2 = PyTouchBar.TouchBarItems.SegmentedControls.Control(title = "World", image = "~/MyImage.png")

sc = PyTouchBar.TouchBarItems.SegmentedControls(controls = [control1, control2, "FooBar"])

Popover

クリックすると別のTouchBarを表示するボタン。

label = TouchBarLabel(text = 'Inside my Popover')    

# title (String) : ボタンの横に表示されるポップオーバーのタイトル。
# shows_close_button (Bool) : Trueの場合、ポップオーバーが開かれると、閉じるボタンが表示される。Falseの場合は、表示されない。ポップオーバーを閉じる方法は、popover.close()を呼び出すことだけ。
# holdItems (list) : ユーザーがボタンをタッチして保持した場合に表示されるアイテムを含むリスト。これは、もうひとつのTouchBarのようなもの。
popover = PyTouchBar.TouchBarItems.Popover([label])
popover.reload() : サブ・タッチバーのコンテンツが変更され、サブ・タッチバーを再読み込みする必要がある場合、このコマンドで呼び出す。
popover.open() : ポップオーバーを開く
popover.close() : ポップオーバーを閉じる