python 如何将菜单栏添加到 Tk() 容器

How to add a menu bar to a Tk() container in python

我正在尝试设计一个 window,顶部有一个菜单栏,带有控件 Add ClientPrint Client ListsExit。我已经从 tkinter 库中导入了所有必需的元素并为控件创建了一个新容器,但是当我尝试将第一个菜单项添加到菜单栏时出现此错误 for k, v in cnf.items():AttributeError: 'str' object has no attribute 'items'

代码

##this is the order.py file responsible for drawing
##the window and ui
from tkinter import *
from Business import *

def add_user():
    print("hello world")
##create a container to hold the components inside the frame
myframe=Tk()
##create the menu bar
menub=Menu(myframe,background='#111', foreground='#111')
##the line below has a bug, i havwe defined the command and the name
menub.add_command('Add Client',command=myframe.quit)
myframe.config(menu=menub)
myframe.mainloop()



您最好阅读教程 - 您必须使用 label=...

menub.add_command(label='Add Client', command=myframe.quit)

如果你不使用 label= 那么它会将文本分配给函数定义中的第一个变量 - cnf=... - 这个变量需要 dictionary 并且它不知道要做什么处理字符串 'Add Client'。您甚至可以在错误消息中看到 cnf.items()


最小工作示例:

import tkinter as tk  # PEP8: `import *` is not preferred

# --- functions ---

def add_user():
    print("hello world")
    
# --- main ---

root = tk.Tk()

menu = tk.Menu(root)
menu.add_command(label='Add Client', command=add_user)
menu.add_command(label='Exit', command=root.destroy)  # `root.quit` may not close window in some situations

root.config(menu=menu)

root.mainloop()

PEP 8 -- Style Guide for Python Code