Ответ 1
Корень проблемы состоит в том, что модуль Tkinter имеет имя Tkinter
(capital "T" ) в python 2.x и Tkinter
(нижний регистр "t" ) в python 3.x.
Чтобы заставить ваш код работать как на Python 2, так и на 3, вы можете сделать что-то вроде этого:
try:
# for Python2
from Tkinter import *
except ImportError:
# for Python3
from tkinter import *
Однако PEP8 говорит об импорте:
Следует избегать импорта подстановочных знаков (из <module> import *)
Несмотря на бесчисленное количество обучающих программ, которые игнорируют PEP8, способ импорта, совместимый с PEP8, будет примерно таким:
import tkinter as tk
При импорте таким образом вам нужно префикс всех команд tkinter с помощью tk.
(например: root = tk.Tk()
и т.д.). Это сделает ваш код более понятным за счет крошечного набора текста. Учитывая, что как tkinter, так и ttk часто используются вместе и импортируют классы с тем же именем, это хорошая вещь. Поскольку Zen of python говорит: "Явное лучше, чем неявное".
Примечание. Часть as tk
является необязательной, но позволяет немного набирать текст: tk.Button(...)
vs tkinter.Button(...)