2020款M1 Pro Mac上Tkinter按钮无法显示在Touch Bar的求助
问题
在2020款Apple M1 Pro Mac(带实体Esc按键)上,尝试通过以下代码使用PyTouchBar和Tkinter在Touch Bar显示按钮:
from tkinter import * import PyTouchBar PyTouchBar.set_customization_identifier("com.madrau.PyTouchBar.touchbar") root = Tk() starter = PyTouchBar.TouchBarItems.Button(title='играть', color=(PyTouchBar.Color.green)) PyTouchBar.set_touchbar([starter]) PyTouchBar.prepare_tk_windows(root) root.mainloop()
执行后仅弹出名为‘kt’的空白模态窗口,Touch Bar无任何反应。已确认使用PyTouchBar支持的Python 3.11版本,求解决办法。
解决方法
调整实体Esc机型的Touch Bar系统设置
- 打开「系统设置」→「键盘」→「键盘快捷键」→「触控栏」
- 取消勾选「将F1、F2等键用作标准功能键」,或在应用列表中为当前Python程序单独开启Touch Bar控制权限
- 确认「触控栏显示」设置为「应用程序控制」,而非固定的功能键布局
修正代码的绑定顺序与窗口焦点
原代码中set_touchbar的调用时机错误,需先完成Tk窗口的准备,再绑定Touch Bar,同时要确保窗口获得焦点。修改后的代码:
from tkinter import * import PyTouchBar PyTouchBar.set_customization_identifier("com.madrau.PyTouchBar.touchbar") root = Tk() root.title("Touch Bar Demo") # 设置明确窗口标题,替换默认的'kt' # 先完成Tk窗口的Touch Bar适配准备 PyTouchBar.prepare_tk_windows(root) # 创建Touch Bar按钮 starter = PyTouchBar.TouchBarItems.Button(title='играть', color=PyTouchBar.Color.green) # 将Touch Bar绑定到指定的Tk窗口 PyTouchBar.set_touchbar([starter], window=root) # 强制窗口获取焦点,确保Touch Bar控制权转移 root.focus_force() root.mainloop()
- 排查环境与兼容性问题
- 执行
pip install --upgrade PyTouchBar更新到最新版本 - 关闭其他占用Touch Bar的应用(如Safari、Xcode),避免资源冲突
- 重启Python解释器后重新运行代码
- 执行
内容的提问来源于stack exchange,提问作者bohdan shelest
相关产品推荐
相关产品推荐

