Python

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

ふと、MacのTouch Barにかんたんに対応できるのか気になったため、メモ。

PythonのNSTouchBarラッパーのPyTouchBarを見つけた。(本稿執筆時点で)TouchBarを搭載したMacBook Pro(もしくは、シミュレータ上)のTkinterとPyGameでしか動作しないとのこと。PyObjcに依存しており、トラックパッドの振動にも対応。

インストール

pip install PyTouchBar

プロジェクトへ組み込む

ウィンドウをTouchBarの「ホスト」にするために、使用しているグラフィックモジュールに応じて、以下のコマンドでウィンドウを準備する必要がある。(この時点では、ウィンドウはTouchBarをホストする準備ができているが、TouchBarは空でアイテムを追加する必要がある。)

Tkinter

Tkinterを使用している場合は以下の呼び出しが必要。

PyTouchBar.prepare_tk_windows(window1, window2, …)

root = Tk()
PyTouchBar.prepare_tk_windows(root)
lbl = Label(root, text="Button")
lbl.pack()
root.mainloop()

// または、Tkの代わりにTouchBarTkを起動する。(Tk()と同じパラメータを使用する)
root = PyTouchBar.TouchBarTk()
lbl = Label(root, text="Button")
lbl.pack()
root.mainloop()

PyGame

ウィンドウのパラメータを設定した直後に、以下の呼び出しが必要。

PyTouchBar.prepare_pygame()

pygame.init()
surface = pygame.display.set_mode((100,200))
PyTouchBar.prepare_pygame()
pygame.display.set_caption('Title')

while True:
  	for event in pygame.event.get():
		  if event.type == pygame.QUIT:
			  pygame.quit()
			  break