menu = tk.Menu(root) # 创建下拉菜单 submenu = tk.Menu(menu, tearoff=0) #tearoff默认值为1 submenu.add_command(label="GaussianNB", command=func1,font=("微软雅黑 -30")) #add_command添加命令菜单项 submenu.add_command(label="KNeighborsClassifier", command=func2,font=("微软雅黑 -30")) submenu.add_command(label="决策树", command=func3,font=("微软雅黑 -30")) # 添加下拉菜单到菜单栏 menu.add_cascade(label="模型菜单", font=("微软雅黑 -20"),menu=submenu) 怎么设置菜单在界面中的具体位置
时间: 2023-10-30 16:07:10 浏览: 26
将菜单放置在界面中的具体位置,可以使用`place()`方法,例如:
```
# 将菜单放置在界面中的位置
menu.place(x=100, y=100)
```
其中,`x`和`y`是菜单左上角在界面中的坐标位置。你可以根据实际需要调整这些值,以便将菜单放置在你想要的位置。需要注意的是,使用`place()`方法时,菜单的位置是固定的,并不会随着窗口的大小和位置的变化而改变。
相关问题
# 创建菜单栏 menu_bar = tk.Menu(master) # 创建“文件”菜单 file_menu = tk.Menu(menu_bar, tearoff=0) file_menu.add_command(label="5M點檢表", command=lambda: self.read_from_excel(file_menu, "5M點檢表")) file_menu.add_command(label="Router首件检查记录表", command=lambda: self.read_from_excel1(file_menu, "Router首件检查记录表")) file_menu.add_command(label="板组作业首件检查记录表", command=lambda: self.read_from_excel2(file_menu, "板组作业首件检查记录表")) # 创建“保养”菜单 maintenance_menu = tk.Menu(menu_bar, tearoff=0) maintenance_menu.add_command(label="日保養", command=lambda: self.read_from_excel3(maintenance_menu, "日保養")) maintenance_menu.add_command(label="周保養", command=lambda: self.read_from_excel4(maintenance_menu, "周保養")) # 创建“测试”菜单 test_menu = tk.Menu(menu_bar, tearoff=0) test_menu.add_command(label="人工測試站表單", command=lambda: self.read_from_excel5(test_menu, "人工測試站表單")) test_menu.add_command(label="自動化測試站表單", command=lambda: self.read_from_excel6(test_menu, "自動化測試站表單")) # 将子菜单添加到菜单栏 menu_bar.add_cascade(label="首件確認表單", menu=file_menu) menu_bar.add_cascade(label="保养表單", menu=maintenance_menu) menu_bar.add_cascade(label="F/T表單", menu=test_menu) # 将菜单栏添加到主窗口 master.config(menu=menu_bar)將這段代碼合并未3級菜單
可以将每个子菜单创建过程合并到一个函数中,然后使用循环遍历一个包含菜单名称和对应命令的列表来创建菜单。具体代码如下:
```
def create_submenu(menu_bar, menu_name, commands):
# 创建子菜单
submenu = tk.Menu(menu_bar, tearoff=0)
for label, command in commands:
submenu.add_command(label=label, command=command)
# 将子菜单添加到菜单栏
menu_bar.add_cascade(label=menu_name, menu=submenu)
# 菜单名称和对应命令的列表
menu_list = [
("首件確認表單", [
("5M點檢表", lambda: self.read_from_excel(file_menu, "5M點檢表")),
("Router首件检查记录表", lambda: self.read_from_excel1(file_menu, "Router首件检查记录表")),
("板组作业首件检查记录表", lambda: self.read_from_excel2(file_menu, "板组作业首件检查记录表"))
]),
("保养表單", [
("日保養", lambda: self.read_from_excel3(maintenance_menu, "日保養")),
("周保養", lambda: self.read_from_excel4(maintenance_menu, "周保養"))
]),
("F/T表單", [
("人工測試站表單", lambda: self.read_from_excel5(test_menu, "人工測試站表單")),
("自動化測試站表單", lambda: self.read_from_excel6(test_menu, "自動化測試站表單"))
])
]
# 遍历菜单列表创建菜单
for menu_name, commands in menu_list:
create_submenu(menu_bar, menu_name, commands)
# 将菜单栏添加到主窗口
master.config(menu=menu_bar)
```
class MainWindow: def __init__(self, master): self.option_list = [] self.master = master master.title("點檢系統") # 获取屏幕的宽度和高度 screen_width = master.winfo_screenwidth() screen_height = master.winfo_screenheight() # 将窗口的大小设置为屏幕的大小 master.geometry("%dx%d" % (screen_width, screen_height))# 创建菜单栏 menu_bar = tk.Menu(master) # 创建“文件”菜单 file_menu = tk.Menu(menu_bar, tearoff=0) file_menu.add_command(label="5M點檢表", command=lambda: self.read_from_excel(file_menu, "5M點檢表")) file_menu.add_command(label="Router首件检查记录表", command=lambda: self.read_from_excel1(file_menu, "Router首件检查记录表")) file_menu.add_command(label="板组作业首件检查记录表", command=lambda: self.read_from_excel2(file_menu, "板组作业首件检查记录表")) # 创建“保养”菜单 maintenance_menu = tk.Menu(menu_bar, tearoff=0) maintenance_menu.add_command(label="日保養", command=lambda: self.read_from_excel3(maintenance_menu, "日保養")) maintenance_menu.add_command(label="周保養", command=lambda: self.read_from_excel4(maintenance_menu, "周保養")) # 创建“测试”菜单 test_menu = tk.Menu(menu_bar, tearoff=0) test_menu.add_command(label="人工測試站表單", command=lambda: self.read_from_excel5(test_menu, "人工測試站表單")) test_menu.add_command(label="自動化測試站表單", command=lambda: self.read_from_excel6(test_menu, "自動化測試站表單")) # 将子菜单添加到菜单栏 menu_bar.add_cascade(label="首件確認表單", menu=file_menu) menu_bar.add_cascade(label="保养表單", menu=maintenance_menu) menu_bar.add_cascade(label="F/T表單", menu=test_menu) # 将菜单栏添加到主窗口 master.config(menu=menu_bar)在這個代碼中需要獲取用戶點擊的菜單欄中子菜單的名稱寫入excel中
可以使用openpyxl库来实现将用户点击的菜单栏子菜单的名称写入Excel中。
首先在类的初始化方法中创建一个Excel工作簿对象:
```
import openpyxl
class MainWindow:
def __init__(self, master):
self.workbook = openpyxl.Workbook()
# ...
```
然后在每个菜单栏子菜单的回调函数中,获取子菜单的名称并将其写入Excel中。下面以读取“5M點檢表”子菜单为例:
```
class MainWindow:
def read_from_excel(self, menu, name):
# 获取子菜单的名称
submenu_name = menu.entrycget(name, "label")
# 将子菜单名称写入Excel
sheet = self.workbook.active
sheet.cell(row=1, column=1, value=submenu_name)
```
以上代码将获取到的子菜单名称写入Excel的A1单元格中。可以根据需要修改行号和列号。
最后,记得在程序退出时保存Excel文件:
```
class MainWindow:
def __init__(self, master):
# ...
master.protocol("WM_DELETE_WINDOW", self.on_exit)
def on_exit(self):
self.workbook.save("菜单栏子菜单.xlsx")
self.master.destroy()
```
阅读全文