right_menu.add_command(label="添加注释", command=self.add_comment('5'))
时间: 2024-03-13 08:47:42 浏览: 22
在这行代码中,`command=self.add_comment('5')`会立即执行`self.add_comment('5')`函数,并将其返回值作为`command`参数的值传递给`add_command()`方法。这可能不是你想要的效果,因为右键菜单在创建时就会调用`self.add_comment('5')`函数,而不是在菜单项被点击时才调用。
为了避免这个问题,你可以使用一个lambda表达式来延迟执行`self.add_comment('5')`函数。例如:
```python
right_menu.add_command(label="添加注释", command=lambda: self.add_comment('5'))
```
在这个例子中,我们将一个lambda表达式作为`command`参数的值传递给`add_command()`方法。这个lambda表达式并不会立即执行`self.add_comment('5')`函数,而是在菜单项被点击时才会执行。当用户点击菜单项时,lambda表达式会调用`self.add_comment('5')`函数,并将其返回值作为命令执行。这样就可以达到预期的效果了。
相关问题
def menuMain(self): print("menu") menubar = tk.Menu(self.root) # 创建菜单栏 file_menu = tk.Menu(menubar, tearoff=False) # 创建空菜单 file_menu.add_command(label="打开") # 向file_menu菜单中添加label file_menu.add_command(label="保存") file_menu.add_command(label="退出", command=self.root.quit) menubar.add_cascade(label="文件", menu=file_menu) # 将file_menu菜单添加到菜单栏 do_menu = tk.Menu(menubar, tearoff=False) # 创建空菜单 do_menu.add_command(label="添加重点人员信息", command=self.insertPeopleInfo) do2_menu = tk.Menu(do_menu) # 二级菜单 do2_menu.add_command(label="修改单个重点人员信息", command=self.updatePeopleInfo) do2_menu.add_command(label="批量修改信息", command=self.updatePeopleInfo) do_menu.add_cascade(label="修改重点人员信息", menu=do2_menu) do_menu.add_command(label="删除重点人员信息", command=self.delPeopleInfo) menubar.add_cascade(label="功能", menu=do_menu) # 将file_menu菜单添加到菜单栏 myself_menu = tk.Menu(menubar, tearoff=False) # 创建空菜单 myself_menu.add_command(label="系统信息", command=self.showSysInfo) menubar.add_cascade(label="关于", menu=myself_menu) # 将file_menu菜单添加到菜单栏 self.root.config(menu=menubar)这个段代码怎么做美化,比方说修改下拉菜单的背景颜色等,并输出修改后的代码
您可以使用以下代码对菜单进行美化:
```python
def menuMain(self):
print("menu")
menubar = tk.Menu(self.root, background='#333', foreground='#FFF', activebackground='#666', activeforeground='#CCC') # 创建菜单栏,设置背景、前景、激活背景、激活前景颜色
menubar.config(relief="flat", border=0) # 去除菜单栏边框
file_menu = tk.Menu(menubar, tearoff=False, background='#333', foreground='#FFF', activebackground='#666', activeforeground='#CCC') # 创建空菜单,设置背景、前景、激活背景、激活前景颜色
file_menu.config(relief="flat", border=0) # 去除菜单边框
file_menu.add_command(label="打开", background='#333', foreground='#FFF', activebackground='#666', activeforeground='#CCC') # 向file_menu菜单中添加label,设置背景、前景、激活背景、激活前景颜色
file_menu.add_command(label="保存", background='#333', foreground='#FFF', activebackground='#666', activeforeground='#CCC') # 向file_menu菜单中添加label,设置背景、前景、激活背景、激活前景颜色
file_menu.add_command(label="退出", command=self.root.quit, background='#333', foreground='#FFF', activebackground='#666', activeforeground='#CCC') # 向file_menu菜单中添加label,设置背景、前景、激活背景、激活前景颜色
menubar.add_cascade(label="文件", menu=file_menu) # 将file_menu菜单添加到菜单栏
do_menu = tk.Menu(menubar, tearoff=False, background='#333', foreground='#FFF', activebackground='#666', activeforeground='#CCC') # 创建空菜单,设置背景、前景、激活背景、激活前景颜色
do_menu.config(relief="flat", border=0) # 去除菜单边框
do_menu.add_command(label="添加重点人员信息", command=self.insertPeopleInfo, background='#333', foreground='#FFF', activebackground='#666', activeforeground='#CCC') # 设置背景、前景、激活背景、激活前景颜色
do2_menu = tk.Menu(do_menu, background='#333', foreground='#FFF', activebackground='#666', activeforeground='#CCC') # 二级菜单,设置背景、前景、激活背景、激活前景颜色
do2_menu.config(relief="flat", border=0) # 去除菜单边框
do2_menu.add_command(label="修改单个重点人员信息", command=self.updatePeopleInfo, background='#333', foreground='#FFF', activebackground='#666', activeforeground='#CCC') # 设置背景、前景、激活背景、激活前景颜色
do2_menu.add_command(label="批量修改信息", command=self.updatePeopleInfo, background='#333', foreground='#FFF', activebackground='#666', activeforeground='#CCC') # 设置背景、前景、激活背景、激活前景颜色
do_menu.add_cascade(label="修改重点人员信息", menu=do2_menu) # 将do2_menu菜单添加到do_menu菜单中
do_menu.add_command(label="删除重点人员信息", command=self.delPeopleInfo, background='#333', foreground='#FFF', activebackground='#666', activeforeground='#CCC') # 设置背景、前景、激活背景、激活前景颜色
menubar.add_cascade(label="功能", menu=do_menu) # 将do_menu菜单添加到菜单栏
myself_menu = tk.Menu(menubar, tearoff=False, background='#333', foreground='#FFF', activebackground='#666', activeforeground='#CCC') # 创建空菜单,设置背景、前景、激活背景、激活前景颜色
myself_menu.config(relief="flat", border=0) # 去除菜单边框
myself_menu.add_command(label="系统信息", command=self.showSysInfo, background='#333', foreground='#FFF', activebackground='#666', activeforeground='#CCC') # 设置背景、前景、激活背景、激活前景颜色
menubar.add_cascade(label="关于", menu=myself_menu) # 将myself_menu菜单添加到菜单栏
self.root.config(menu=menubar)
```
您可以根据自己的需要,自由修改以上代码中的颜色值,以实现您想要的菜单风格。
# 创建菜单栏 menu_bar = tk.Menu(master) # 创建“文件”菜单 file_menu = tk.Menu(menu_bar, tearoff=0) file_menu.add_command(label="5M點檢表", command=self.read_from_excel) file_menu.add_command(label="Router首件检查记录表", command=self.read_from_excel1) file_menu.add_command(label="板组作业首件检查记录表", command=self.read_from_excel2) # 创建“保养”菜单 maintenance_menu = tk.Menu(menu_bar, tearoff=0) maintenance_menu.add_command(label="日保養", command=self.read_from_excel3) maintenance_menu.add_command(label="周保養", command=self.read_from_excel4) # 创建“测试”菜单 test_menu = tk.Menu(menu_bar, tearoff=0) test_menu.add_command(label="人工測試站表單", command=self.read_from_excel5) test_menu.add_command(label="自動化測試站表單", command=self.read_from_excel6) # 将子菜单添加到菜单栏 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)將這個代碼中的菜單欄位添加儅用戶點擊某個菜單時將相應的菜單變個顔色,20分鐘后變回來
你可以使用`after()`方法来设置定时器,然后在定时器到达时重新设置菜单的颜色。下面是一个示例代码:
```python
def change_menu_color(menu):
menu.configure(background="red") # 设置菜单背景颜色为红色
def reset_menu_color(menu):
menu.configure(background="SystemButtonFace") # 设置菜单背景颜色为默认颜色
# 在菜单被点击时调用这个函数
def menu_clicked(menu):
change_menu_color(menu)
root.after(1200000, reset_menu_color, menu) # 设置20分钟后重置菜单颜色
# 创建菜单栏
menu_bar = tk.Menu(master)
# 创建“文件”菜单
file_menu = tk.Menu(menu_bar, tearoff=0)
file_menu.add_command(label="5M點檢表", command=lambda: menu_clicked(file_menu))
file_menu.add_command(label="Router首件检查记录表", command=lambda: menu_clicked(file_menu))
file_menu.add_command(label="板组作业首件检查记录表", command=lambda: menu_clicked(file_menu))
# 创建“保养”菜单
maintenance_menu = tk.Menu(menu_bar, tearoff=0)
maintenance_menu.add_command(label="日保養", command=lambda: menu_clicked(maintenance_menu))
maintenance_menu.add_command(label="周保養", command=lambda: menu_clicked(maintenance_menu))
# 创建“测试”菜单
test_menu = tk.Menu(menu_bar, tearoff=0)
test_menu.add_command(label="人工測試站表單", command=lambda: menu_clicked(test_menu))
test_menu.add_command(label="自動化測試站表單", command=lambda: menu_clicked(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)
```
在上面的代码中,当菜单被点击时,会调用`menu_clicked()`函数,将相应的菜单对象作为参数传递给它。`menu_clicked()`函数会调用`change_menu_color()`函数来将菜单背景颜色设置为红色,并使用`after()`方法设置一个定时器,在20分钟后调用`reset_menu_color()`函数将菜单颜色重置为默认颜色。注意,在使用`after()`方法时,需要将函数名和参数作为额外的参数传递给它。这可以通过使用`lambda`表达式来实现。