我有一个TK菜单小工具,并想删除命令时,点击后,做了一些副作用的东西。所有代码都在DocumentView类中,因此self.varnames
self.root= Tk()
self.root.title("Document Screen")
self.root.geometry(str(DocHeight)+"x"+str(DocHeight))
self.mainMenu = Menu(self.root)
self.allMembersMenu = Menu(self.updateMembersMenu)
for member in self.allUsers:
self.allMembersMenu.add_command(label=member,command=lambda i= member:
self.removeUser(i))这将为系统中的每个用户创建一个命令。删除用户的定义如下
def removeUser(self,uname):
print("Remove User Function , uname: {}".format(uname))
x=0
mem = self.currentDoc.getMembers()
delmem=""
for i in range(0,len(mem)):
if (mem[i]==uname):
x=i
delmem = mem[i]
break
self.allMembersMenu.delete(x)
self.allUserMenu.destroy
self.currentDoc.removeMember(delmem)使用打印函数,我知道传递了正确的变量,但菜单中没有发生任何更改,是否缺少某种Menu.reDraw()方法?
如果它不存在,有没有办法销毁这个子菜单并重新绘制它?
发布于 2020-11-25 01:59:00
import tkinter as tk
root = tk.Tk()
root.geometry("400x600")
root.option_add("*tearOff", False)
menuBar = tk.Menu(root)
root.config(menu=menuBar)
usersMenu = tk.Menu(menuBar)
delUserMenu = tk.Menu(menuBar)
menuBar.add_cascade(menu=usersMenu, label="Users")
usersMenu.add_cascade(menu=delUserMenu, label="Delete")
usernamelist = ["Ali", "Ahmed", "Muhamed"]
def del_user(username):
delUserMenu.delete(delUserMenu.index(username))
print(username, "deleted!")
def command(username): return lambda :del_user(username)
for username in usernamelist:
delUserMenu.add_command(label=username, command=command(username))
root.mainloop()https://stackoverflow.com/questions/53736686
复制相似问题