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

Python Tkinter开发计算器导航栏被遮挡 如何设置z-index?

Tkinter导航栏遮挡问题解决方案

问题根因

导航栏显示异常确实是控件堆叠遮挡导致:你先在__ui_create方法中创建了ToggleMenu实例,后续才创建计算器的显示区域、按钮区域两个Frame,Tkinter中后创建的控件默认层级高于先创建的控件,所以这两个Frame直接盖住了侧边菜单,仅露出边缘部分。

Tkinter层级控制方法

Tkinter没有名为z-index的参数,控制控件堆叠层级有两种常用方式:

  • 调整创建顺序:需要显示在上层的控件最后创建
  • 调用lift()方法:手动将指定控件提升到所有同父级控件的最上层

代码修改方案

1. 侧边菜单增加层级提升逻辑

修改ToggleMenu类的ui_start方法,菜单弹出时主动提升层级:

def ui_start(self):
    self.place(x=0, y=0)
    self.lift()

2. 修复标题与汉堡按钮重叠问题

当前标题标签用pack布局会和左上角的汉堡按钮重叠,调整__ui_create方法的布局逻辑:

def __ui_create(self):
    # 先创建汉堡按钮固定在左上角
    self.button_toggle = tk.Button(self.window, text='☰', command=self.__button_toggle_handler)
    self.button_toggle.place(x=0, y=0)
    # 标题放在汉堡按钮右侧,避免重叠
    self.label = tk.Label(self.window, text='Standard', font='Verdana 15')
    self.label.place(x=30, y=0)
    self.toggle_menu = ToggleMenu(self.window)
    self.toggle_menu.set_button_callback(self.__toggle_callback)

3. 移除重复的主循环调用

主入口中重复调用了两次mainloop,删除多余调用:

if __name__ == "__main__":
    calculatormain = calculator()
    calculatormain.run()

修改完成后点击汉堡按钮即可正常显示完整侧边菜单,不会被下方控件遮挡。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:45:04