如何让Tkinter下拉菜单显示在其他窗口之上并居中?
解决Tkinter下拉菜单窗口置顶与居中问题
修改后的代码如下:
from tkinter import * def dropdown_menu(menu_list): root = Tk() root.title('Process Mode') # 设置窗口始终置顶 root.attributes('-topmost', True) # 设置窗口大小并居中显示 window_width = 300 window_height = 100 screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() x_position = (screen_width - window_width) // 2 y_position = (screen_height - window_height) // 2 root.geometry(f"{window_width}x{window_height}+{x_position}+{y_position}") tkvar = StringVar(root) def on_selection(value): global dropdown_choice dropdown_choice = value root.destroy() # 调整标签和下拉菜单的布局,避免重叠 Label(root, text='Choose Mode').grid(row=1, column=2, padx=10, pady=10) popupMenu = OptionMenu(root, tkvar, *menu_list, command=on_selection) popupMenu.grid(row=2, column=2, padx=10, pady=5) popupMenu.config(width=20, height=2) root.mainloop() return dropdown_choice options = ['1', '2', '3'] selection = dropdown_menu(options)
关键修改说明:
- 窗口置顶:通过
root.attributes('-topmost', True)让窗口始终显示在其他应用窗口之上,解决被遮挡的问题 - 窗口居中:先获取屏幕分辨率,再计算窗口的居中坐标,通过
geometry方法设置窗口位置和大小 - 修复布局重叠:原代码中标签和下拉菜单都放在同一网格位置,调整标签到
row=1避免重叠,同时添加padx和pady优化间距 - 移除冗余代码:删掉了没用的
change_dropdown函数和tkvar.trace绑定,因为OptionMenu的command参数已经能处理选择事件
内容的提问来源于stack exchange,提问作者Rob Lasch
相关产品推荐
相关产品推荐

