python 如何将菜单栏添加到 Tk() 容器
How to add a menu bar to a Tk() container in python
我正在尝试设计一个 window,顶部有一个菜单栏,带有控件 Add Client
、Print Client Lists
和 Exit
。我已经从 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()
我正在尝试设计一个 window,顶部有一个菜单栏,带有控件 Add Client
、Print Client Lists
和 Exit
。我已经从 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()