我是tkinter
中的新人
我看到了视频教程来学习它
在此视频中,他使用以下代码从tkinter
导入:
from tkinter import *
from tkinter import ttk
我知道第一行意味着导入tkinter
中的所有课程,功能和...并且必须包含ttk
。
为什么在导入所有必须包含*
ttk
的所有内容时写下第二行
我尝试写第一行并删除第二行,但后来我不能使用这样的代码:
button = ttk.Button(text = "text")
并收到错误ttk
未找到。
ttk
导入分开时有什么不同?以及我们在第一行使用ttk
时未包含*
的原因。
谢谢。
答案 0 :(得分:2)
答案很简单:from tkinter import *
不会导入ttk,因为它的工作原理是什么。他们为什么这样设计呢?这并不重要。创建模块时,您可以定义导出的内容和不导出的内容,这意味着您不必导出所有内容。在这种情况下,原始开发人员选择不导出ttk。
在我看来,你永远不应该进行全局导入(例如:from tkinter import *
)因为它会使你的程序不那么清晰。我建议你这样做:
import tkinter as tk
from tkinter import ttk
...
b1 = tk.Button(...)
b2 = ttk.Button(...)
您正在使用哪个库变得清晰,代价是必须为每个小部件键入三个额外字符。由于代码读取次数比写入次数多,因此优化可读性是一件明智的事情。
有关import *
工作原理的详细信息,请参阅python 3 tutorial on importing。另请参阅section on importing in PEP8,它不鼓励使用通配符。从该文件:
应该避免使用通配符导入(来自import *) 不清楚命名空间中存在哪些名称,令人困惑 读者和许多自动化工具。
答案 1 :(得分:-2)
据我所知,必须要考虑第一行,并且我没有认识到你的第二段代码的sintax。
对我来说,它可能看起来像这样:
from tkinter import *
window = Tk()
button = button(window, text="text")
button.pack()
我希望我已经回答了你的问题,否则,你可以问我,我会尽力回答我所知道的问题。