из Tkinter import * ImportError: Нет модуля с именем 'Tkinter'

1

Я использую PyCharm в Windows, и я загрузил Python 3.5.5 и все другие библиотеки через Anaconda, а также модуль tkinter. До этого времени я использовал с ней какие-либо проблемы. В последний раз я установил живую библиотеку Streamer. Я думаю, что причина проблемы. Tried Capital и Small:

from Tkinter import * , from tkinter import * , 
root = tk(), root = Tk(), root = tk.Tk(), root = tk.Tk(), root = Tk.tk()
root = TK.TK()

Вот код, который я запускаю в PyCharm:

from tkinter import *
import tkinter

top = Tk()

def helloCallBack():
   print( "Hello Python", "Hello World")

B = tkinter.Button(top, text ="Hello", command = helloCallBack)

B.pack()
top.mainloop()

Ни одна из этих работ здесь

Изображение 174551

  • 0
    простой ответ - вы пытаетесь импортировать Tkinter в первую строку. Это tkinter к ошибке, потому что ваша версия python должна импортировать tkinter нижнем регистре. Вы не можете просто добавить все возможные варианты импорта и надеяться на лучшее. Если вы импортируете что-то, чего нет, произойдет ошибка. Удалите все, что находится выше строки import tkinter и измените ее на import tkinter as tk затем используйте tk. префикс для виджетов.
Теги:
tkinter

3 ответа

2
Лучший ответ

Давайте выясним некоторые основы, поскольку кажется, что вы думаете, что некоторые вещи должны работать, что никогда не будет.

Нет, как вам импортировать, вам всегда нужно делать Tk() с верхним регистром T самостоятельно или с соответствующим префиксом.

Вещи, которые вы пробовали, которые никогда не будут работать.

root = tk(), Tk.tk(), root = TK.TK()

все нижний регистр tk() или все прописные буквы TK() никогда не будут работать в tkinter.

Если from tkinter import * не работает и выполнение top = tkinter.Tk() не работает, очень вероятно, что у вас нет tkinter. По крайней мере, по какой-то причине он был удален.

Windows-дистрибутив должен поставляться с tkinter уже. Я попытался бы сделать чистую установку и посмотреть, что произойдет. Вы должны обновить до 3.6, так как 3.5 имеет некоторые ошибки, которые необходимо устранить.

Что касается вашей проблемы с импортом.

from tkinter import * Эта строка должна отлично работать с top = Tk(). Так что говорит, что tkinter не установлен.

import tkinter Эта избыточная строка должна работать как top = tkinter.Tk() но если предыдущий не работает, то это тоже не будет.

Проведя некоторое тестирование на PyCharm, я могу сказать, что если PyCharm не смог загрузить tkinter, тогда он сначала ошибся в импорте, а не в части Tk().

Traceback (most recent call last):
  File "C:/Users/mcdomi3/PycharmProjects/MintyFlakes/test.py", line 1, in <module>
    from Tkinter import *
ModuleNotFoundError: No module named 'tkinter'

Process finished with exit code 1

С такой небольшой переоценкой я думаю, что ваша установка повреждена.

Заключение.

Вам нужно переустановить python или попытаться pip install tkinter поскольку он отсутствует в ваших библиотеках или каким-то образом поврежден.

  • 0
    Что было бы любопытно, если бы первое не сработало, а второе сработало бы. Tk - это класс в файле __init__.py ; либо файл был изменен, либо, если импорт выполнен успешно, Tk должен находиться в пространстве имен.
  • 0
    Это было бы интересно, если бы tkinter.Tk() работал. Хотя все права, если первое не работает, последнее не должно. Я думаю, что простое обновление до 3.6 решило бы проблему для операции.
Показать ещё 5 комментариев
3

Хорошо. Прежде всего:

Что вы не должны делать:

В производстве, если вы не уверены, что модуль называется так или иначе (который может быть в зависимости от установленной версии Python), вы не должны помещать все импорты вместе, потому что, если кто-то не работает, он поднимет импорт, и это приведет к сбою вашего времени выполнения. Выполните следующие действия:

try:
    import Tkinter

except ImportError:  # Python 3.x present
    import tkinter

Однако в вашем случае вы уже знаете, что у вас есть Python 3, так что это не проблема. Просто используйте правильный (продолжайте читать в следующем разделе).

Что рекомендуется делать:

Если вы используете Python 2.x:

Модуль называется Tkinter. Вы можете from Tkinter import * и Tk.

Если вы используете Python 3.x:

Модуль называется Tkinter. Обратите внимание на строчные буквы. Вам нужно import tkinter; и используйте tkinter.Tk

обоснование

Возможно, вы захотите прочитать этот фрагмент из этого ответа, уже опубликованного на SO:

Тем не менее, PEP8 имеет это сказать о подстановочных импортах:

Следует избегать импорта подстановочных знаков (из импорта *)

Несмотря на бесчисленное количество обучающих программ, которые игнорируют PEP8, способ импорта, соответствующий PEP8, будет примерно таким:

import tkinter as tk

При импорте таким образом вам нужно префикс всех команд tkinter с помощью tk. (например: root = tk.Tk() и т.д.). Это сделает ваш код более понятным за счет крошечного набора текста. Учитывая, что как tkinter, так и ttk часто используются вместе и импортируют классы с тем же именем, это хорошая вещь. Как говорится в Zen of python: "Явный лучше, чем неявный".

Примечание. Часть tk является необязательной, но позволяет немного набирать текст: tk.Button(...) vs tkinter.Button(...)

Полный ответ: qaru.site/questions/99547/...

Почему ваш переводчик не импортирует Tk

Я не уверен, почему ваш интерпретатор не импортирует Tk для этого использования. Вы должны предоставить более подробную информацию, чтобы иметь возможность решить эту часть вашей проблемы.

Изменить: строка from tkinter import * включает пространство имен файла __init__.py в tkinter модуля tkinter в ваш файл. Поэтому вы должны проверить:

  1. Где PyCharm импортирует модуль tkinter. Вы можете перейти к слову tkinter в своем импортировании, получить контекстное меню с помощью правого клика и перейти к: Go to --> Declaration (или просто нажать Ctrl+B). Он должен доставить вас в этот файл __init__.py где Tk должен быть классом, определенным в нем.

  2. Если ваш Python Path при запуске файла извлекает эту папку, вы нашли модуль Tk.

Если это не нормально, то это, вероятно, потому, что ваша установка нарушена. Я был бы полезен, если бы вы сказали нам, если только from tkinter import * не работает или import tkinter; tkinter.Tk import tkinter; tkinter.Tk не определяется. Вы должны пойти на чистую установку.

Чтобы помочь нам узнать корень проблемы, попробуйте запустить тот же код с терминала или в консоли Python и посмотреть, что произойдет.

  • 0
    Почему? у него уже есть from tkinter import * . почему Tk() работает как есть?
  • 0
    Добавлено объяснение @blue_note.
Показать ещё 13 комментариев
0

Удалите первые 3 строки. Вы пробовали все возможные имена. Большинство из них не работают. Существует либо Tkinter либо tkinter, а tk() - нет.

  • 0
    Спасибо Уважаемый Это сработало после переустановки модуля Tk и Python

Ещё вопросы

Сообщество Overcoder
Наверх
Меню