首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Tk菜单删除命令,Menu.reDraw()?

Python Tk菜单删除命令,Menu.reDraw()?
EN

Stack Overflow用户
提问于 2018-12-12 13:38:51
回答 1查看 505关注 0票数 1

我有一个TK菜单小工具,并想删除命令时,点击后,做了一些副作用的东西。所有代码都在DocumentView类中,因此self.varnames

代码语言:javascript
复制
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))

这将为系统中的每个用户创建一个命令。删除用户的定义如下

代码语言:javascript
复制
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()方法?

如果它不存在,有没有办法销毁这个子菜单并重新绘制它?

EN

回答 1

Stack Overflow用户

发布于 2020-11-25 01:59:00

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53736686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档