из Tkinter import * ImportError: Нет модуля с именем 'Tkinter' - PullRequest
0 голосов
/ 31 августа 2018

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

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()

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

screenshot

Ответы [ 3 ]

0 голосов
/ 31 августа 2018

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

0 голосов
/ 31 августа 2018

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

Независимо от того, как вы импортируете, вам всегда нужно будет делать 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 голосов
/ 31 августа 2018

Хорошо. Первый раз:

Чего не следует делать:

В производственной среде, если вы не уверены, вызывается ли модуль тем или иным образом (что может зависеть от установленной версии 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 с тк. (например: root = tk.Tk () и т. д.). Это сделает ваш код легче понять за счет чуть-чуть больше печатать. Учитывая, что оба tkinter и ttk часто используются вместе и импортируют классы с одно и то же, это хорошая вещь. Как утверждает дзен питона: «явное лучше, чем неявное».

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

Полный ответ: https://stackoverflow.com/a/11621141/4396006

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

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

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

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

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

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

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

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