我正在尝试使用带有标准库Tkinter的Python 3.2测试GUI代码,但我无法导入库.
这是我的测试代码:
from Tkinter import *
root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
shell报告此错误:
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
from Tkinter import *
ImportError: No module named Tkinter
Run Code Online (Sandbox Code Playgroud)
Ben*_*tes 32
问题的根源是Tkinter模块Tkinter在python 2.x中命名为(大写"T"),tkinter在python 3.x中命名为(小写"t").
要使您的代码在Python 2和3中都可以工作,您可以执行以下操作:
try:
# for Python2
from Tkinter import *
except ImportError:
# for Python3
from tkinter import *
Run Code Online (Sandbox Code Playgroud)
但是,PEP8有关于通配符导入的说法:
应避免使用通配符导入(来自<module> import*)
尽管有无数的教程忽略了PEP8,但符合PEP8的导入方式将是这样的:
import tkinter as tk
Run Code Online (Sandbox Code Playgroud)
以这种方式导入时,需要为所有tkinter命令添加前缀tk.(例如:root = tk.Tk()等).这将使您的代码更容易理解,代价是更多的打字.鉴于tkinter和ttk经常一起使用并导入具有相同名称的类,这是一件好事.正如蟒蛇的禅宗所说:"显性胜过隐性".
注意:该as tk部分是可选的,但允许您少输入:tk.Button(...)vstkinter.Button(...)
使用Tkinteras tkinter(小写)为3.x 重写代码如下:
from tkinter import *
root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
83755 次 |
| 最近记录: |