You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Tkinter菜单在触发按钮的位置弹出?

Tkinter按钮菜单定位错误的修复方案

开发基于yt-dlp的视频下载应用(声明:非盗版用途),每个下载项包含一个触发菜单的按钮,但点击按钮时菜单始终显示在屏幕左上角,而非按钮所在位置。原代码中open_info_menu方法使用固定初始值的window_coords调用tk_popup,导致定位错误。

解决方案

触发菜单时动态获取按钮的屏幕坐标,使用组件的winfo_rootx()和winfo_rooty()方法获取按钮相对于屏幕的位置,再结合按钮高度调整Y轴坐标,让菜单显示在按钮下方:

def open_info_menu(self) -> None:
    # 获取按钮左上角的屏幕X坐标
    x = self.info_button.winfo_rootx()
    # 获取按钮左上角的屏幕Y坐标,加上按钮高度让菜单显示在按钮下方
    y = self.info_button.winfo_rooty() + self.info_button.winfo_height()
    self.info_menu.tk_popup(x, y)

编辑:修改上述代码后,菜单已能正确显示在按钮所在位置。

内容的提问来源于stack exchange,提问作者cogos18

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 18:05:13