python - 是否有不同的方法来创建菜单栏?
问题描述
我遇到了两种不同的方法来创建菜单栏:
import tkinter as tk
window = tk.Tk()
menu_bar = tk.Menu() ■
window.config(menu = menu_bar) #2
window.mainloop()
import tkinter as tk
from tkinter import Menu
window = tk.Tk()
menu_bar = Menu(window) ■
window.configure(menu = menu_bar)
window.mainloop()
问题:这些代码行之间有什么区别?我的意思是,如果它们相同,为什么语法不同?(我已将引用的代码行标记为■)。从 tkinter导入菜单如何影响代码行?
解决方案
这些代码行之间有什么区别?
它做同样的事情(除了导入。使用from tkinter import Menu
,您只是从 导入Menu
,没有其他内容tkinter
。但在第一个示例中,您正在导入整体tkinter
,您可以引用tkinter.Menu
as tk.Menu
。但在第二个示例中,您只需要说Menu
.
请注意,在第二个示例中,您仍然可以使用tk.Menu
以及Menu
. 因此,第二次导入变得无用,可以删除。最好遵循第一个示例。
正如 AST 所提到的,如果你说Menu()
,一个现有的实例Tk()
将作为主参数隐式传递。但是,如果您说Menu(win)
,则表明您正在通过win
。始终建议在parent
使用多个窗口时显式传递参数,以免引起混淆。
推荐阅读
- android - 有没有其他人在最近的 android-studio 上遇到过不正确的 sha256 校验和?
- html - 在 div 中将表单居中
- python - 具有某些条件的熊猫中的数据框
- c# - 尝试删除字符时陷入无限循环
- c# - 尝试使用 Json.Net 反序列化时发生异常
- python-3.x - 无法使用 Python 将全尺寸图像发布到时间轴
- julia - 如何根据字段的顺序显示变量字段的值?
- python - 如何从字典列表中实例化来自不同类的对象?
- javascript - 在 GraphQL 中使用特定字符串搜索特定结果
- ruby - Ruby 中的实例变量;为什么我必须(有时)指定`self`?