Reputation: 8043
When I answer Tkinter questions I usually try and run the code myself, but sometimes I get this error:
Traceback (most recent call last):
File "C:\Python27\pygame2.py", line 1, in <module>
from tkinter import *
ImportError: No module named tkinter
When I look at the question I see they import tkinter
with a lower-case t:
from tkinter import *
I always import Tkinter
with a capital T:
from Tkinter import *
Which always works for me. What is the difference between using tkinter
and Tkinter
?
Please use this question as the canonical to close questions where OP has used the wrong name for the import. There are other reasons why importing the Tkinter library may fail; see also Why does tkinter (or turtle) seem to be missing or broken? Shouldn't it be part of the standard library? , a newly established canonical to gather information about those problems and how to repair the Tkinter installation when necessary. If it isn't clear which case applies, please either offer both duplicate links, or close the question as "needs debugging details".
Upvotes: 36
Views: 26845
Reputation: 1868
The only difference is the module name that depends on the major version of Python. While in Python 3 it is tkinter
, it used to be Tkinter
in Python 2. Keep in mind, that other modules related to Tkinter were renamed as well. Here is the full list.
From the docs:
Tkinter has been renamed to tkinter in Python 3.
For backward compatibility, it's a good idea to import tkinter and the related modules you're using like this:
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
Upvotes: -1
Reputation: 7735
I had a script which had different imports of Python 2.* Tkinter so browsing a but I see that the answer are all scattered. Here a small summary with a safe Script for using both Python versions.
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'
Upvotes: 1
Reputation: 86
It's simply that in Python 3 it's "tkinter" and in Python 2 it's "Tkinter" case in point:
#python 2
from Tkinter import *
#python 3
from tkinter import *
To make program run both on Python 2 and Python 3 you can use:
try:
import tkinter as tk
except:
import Tkinter as tk
and then use Tkinter module as tk
Upvotes: 3
Reputation: 105
According to the official documentation, "Tkinter has been renamed to tkinter in Python 3". In Python2 you use import Tkinter
or more often from Tkinter import *
where "*" means "all". In Python3 you use import tkinter
or from tkinter import *
.
Upvotes: 2
Reputation: 89
The capitalization of Tkinter and tkinter widget, method and option names is significantly different across the board. In some cases, the names themselves are different. Some features of Tkinter do not exist in tkinter, and vice-versa. But, as already stated, the main difference is that Tkinter is a module in Python 2x while tkinter is a module in Python 3x.
Upvotes: 5
Reputation:
Tkinter
is Python 2.x's name for the Tkinter library. In Python 3.x however, the name was changed to tkinter
. To avoid running into this problem, I usually do this:
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
Upvotes: 12
Reputation: 474281
It's simple.
For python2 it is:
from Tkinter import *
For python3 it is:
from tkinter import *
Here's the way how can you forget about this confusion once and for all:
try:
from Tkinter import *
except ImportError:
from tkinter import *
Upvotes: 55