ai didi

python - 为什么 tkinter ttk 在 python 3.5.1 中显示 "name ttk is not defined"

转载 作者:行者123 更新时间:2023-11-28 21:47:22 24 4
gpt4 key购买 nike

考虑这个简单的代码:

from tkinter import *
from tkinter.ttk import *
root= Tk()
ttk.Label(root, text='Heading Here').grid(row=1, column=1)
ttk.Separator(root,orient=HORIZONTAL).grid(row=2, columnspan=5)
root.mainloop()

当我运行这段代码时它显示错误

ttk.Label(root, text='Heading Here').grid(row=1, column=1)
NameError: name 'ttk' is not defined

最佳答案

当您执行import X 时,您正在导入一个名为X 的模块。从这一点开始,X 将被定义。

当你执行from X import *时,你不是导入X,你只是导入里面的东西XX 本身将是未定义的。

因此,当您执行 from tkinter.ttk import * 时,您并没有导入 ttk,您只是导入了 in ttk 中的内容.这将导入诸如 LabelButton 等内容,但不是 ttk 本身。

在 python3 中导入 ttk 的正确方法是使用以下语句:

from tkinter import ttk  

有了它,你可以用 ttk.Label 引用 ttk 标签,用 ttk.Button 引用 ttk 按钮,等等。

注意:执行from tkinter.ttk import * 是危险的。不幸的是,ttktkinter 都导出了同名的类。如果同时执行 from tkinter import *from tkinter.ttk import *,您将用另一个类覆盖一个类。导入的顺序将改变您的代码的行为方式。

出于这个原因——特别是在 tkinter 和 ttk 的情况下,它们每个都有几个重叠的类——应该避免通配符导入。 PEP8 ,官方 python 风格指南,正式不鼓励通配符导入:

Wildcard imports ( from import * ) should be avoided, as they make it unclear which names are present in the namespace, confusing both readers and many automated tools.


注意:您的问题暗示您使用的是 python 3,但如果您使用的是 python 2,则只需执行 import ttk 而不是 from tkinter import ttk . ttk 在 python 3 中移动。

关于python - 为什么 tkinter ttk 在 python 3.5.1 中显示 "name ttk is not defined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36592982/

24 4 0
文章推荐: python - 如何使用 tkinter pack() 方法将小部件放在下一行?
文章推荐: python - DataFrames 的简单合并
文章推荐: Python RegEx 在单词前停止
文章推荐: python - 每个 Django 应用程序的不同 virtualenv
行者123
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com