0

这是我的代码:

import sys
import tkinter as tk
import os
mGui = tk.Tk()
mGui.geometry("300x300")
mGui.title("YourBowlingSpeed")
mlabel1 = Label (text = "my label")
mlabel1.place (x = 50,y = 150)

我改变了使用 * 导入的习惯,但这不起作用,它显示了一个错误。回溯(最近一次调用最后一次):文件“C:\Python33\Projects\YorBowlingSpeed-.py”,第 7 行,在 mlabel1 = Label (text = "mylabel") NameError: name 'Label' is not defined

4

2 回答 2

2

您没有直接将类Label导入全局命名空间,您只导入了模块。要引用它,您必须执行以下操作:

tk.Label(text = "my label")

或者,您可以导入该类:

from tkinter import Tk, Label

虽然我从未使用过 Tkinter,但我经常看到以下语法:

from tkinter import *

它会导入每个类,因此您不需要放在tk.后面的类名。请注意,这可能是有风险的,就像您已经调用了一个变量一样Label,它将被覆盖。

于 2013-08-21T11:49:29.970 回答
2

现在你正在使用

import tkinter as tk

您需要参考tk来创建tkinter小部件,所以而不是

mlabel1 = Label (text = "my label")

利用

mlabel1 = tk.Label (text = "my label")
#         ^^^

很高兴你切换到这种模式!现在任何阅读您的代码的人都会立即知道这Label是来自tkinter. 它明确、易于阅读、不会导致命名空间冲突,并且更易于维护代码。

于 2013-08-21T12:19:20.637 回答