[英]Difference between tkinter and Tkinter
當我回答 Tkinter 問題時,我通常會嘗試自己運行代碼,但有時我會收到此錯誤:
Traceback (most recent call last):
File "C:\Python27\pygame2.py", line 1, in <module>
from tkinter import *
ImportError: No module named tkinter
當我查看問題時,我看到他們使用小寫的 t 導入tkinter
:
from tkinter import *
我總是用大寫的 T 導入Tkinter
:
from Tkinter import *
這總是對我有用。 使用tkinter
和Tkinter
什么區別?
這很簡單。
對於python2,它是:
from Tkinter import *
對於python3,它是:
from tkinter import *
這是您如何一勞永逸地忘記這種混亂的方法:
try:
from Tkinter import *
except ImportError:
from tkinter import *
Tkinter
是 Python 2.x 中 Tkinter 庫的名稱。 然而,在 Python 3.x 中,名稱已更改為tkinter
。 為了避免遇到這個問題,我通常這樣做:
from sys import version_info
if version_info.major == 2:
# We are using Python 2.x
import Tkinter as tk
elif version_info.major == 3:
# We are using Python 3.x
import tkinter as tk
Tkinter 和 tkinter 小部件、方法和選項名稱的大寫完全不同。 在某些情況下,名稱本身是不同的。 Tkinter 的某些功能在 tkinter 中不存在,反之亦然。 但是,如前所述,主要區別在於 Tkinter 是 Python 2x 中的模塊,而 tkinter 是 Python 3x 中的模塊。
很簡單,在 Python 3 中它是“tkinter”,而在 Python 2 中它是“Tkinter”案例:
#python 2
from Tkinter import *
#python 3
from tkinter import *
要使程序同時在 Python 2 和 Python 3 上運行,您可以使用:
try:
import tkinter as tk
except:
import Tkinter as tk
然后使用 Tkinter 模塊作為 tk
根據官方文檔,“Tkinter 已在 Python 3 中重命名為 tkinter”。 在 Python2 中,您使用import Tkinter
或更頻繁地使用from Tkinter import *
其中“*”表示“全部”。 在 Python3 中,您使用import tkinter
tkinter 或from tkinter import *
tkinter from tkinter import *
。
Python 2 一直使用from Tkinter import *
但 python 3 使用from tkinter import *
我覺得這很愚蠢,不幸的是它讓很多人感到困惑。
蟒蛇2:
from Tkinter import *
蟒蛇3:
from tkinter import *
在python 2中,它是:
from Tkinter import *
在python 3中,它是:
from tkinter import *
如果您想讓您的代碼在兩個版本中都能正常工作,請執行以下操作:
try:
from Tkinter import *
except:
from tkinter import *
try:
import tkinter
print"importing tkinter from python 3.x"
except:
import Tkinter
print"importing Tkinter from python 2.x"
finally:
print"Difference !"
我有一個腳本,它有不同的 Python 2.* Tkinter 導入,所以瀏覽了一個,但我看到答案都是分散的。 這里有一個使用兩個 Python 版本的安全腳本的小總結。
try:
import Tkinter as tk
import tkMessageBox as tkm
import ScrolledText as tkst
from tkFileDialog import askopenfilename
except ImportError:
import tkinter as tk
import tkinter.messagebox as tkm
import tkinter.scrolledtext as tkst
from tkinter.filedialog import askopenfilename
ModuleNotFoundError: No module named 'Tkinter'
ModuleNotFoundError: No module named 'tkMessageBox'
ModuleNotFoundError: No module named 'ScrolledText'
ModuleNotFoundError: No module named 'tkFileDialog'
唯一的區別是模塊名稱取決於 Python 的主要版本。 雖然在 Python 3 中它是tkinter
,但它曾經是 Python 2 中的Tkinter
。請記住,與 Tkinter 相關的其他模塊也已重命名。 這是完整列表。
從文檔:
在 Python 3 中,Tkinter 已重命名為 tkinter。
為了向后兼容,最好像這樣導入 tkinter 和您正在使用的相關模塊:
try:
import tkinter as tk
from tkinter import messagebox
from tkinter import filedialog
except ImportError:
import Tkinter as tk
import tkMessageBox as messagebox
import tkFileDialog as filedialog
真的沒有什么區別。 這只是您的計算機類型和 Python 版本之間的差異。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.