Я использую 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()
Ни одна из этих работ здесь
Давайте выясним некоторые основы, поскольку кажется, что вы думаете, что некоторые вещи должны работать, что никогда не будет.
Нет, как вам импортировать, вам всегда нужно делать 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
поскольку он отсутствует в ваших библиотеках или каким-то образом поврежден.
__init__.py
; либо файл был изменен, либо, если импорт выполнен успешно, Tk должен находиться в пространстве имен.
tkinter.Tk()
работал. Хотя все права, если первое не работает, последнее не должно. Я думаю, что простое обновление до 3.6 решило бы проблему для операции.
Хорошо. Прежде всего:
В производстве, если вы не уверены, что модуль называется так или иначе (который может быть в зависимости от установленной версии Python), вы не должны помещать все импорты вместе, потому что, если кто-то не работает, он поднимет импорт, и это приведет к сбою вашего времени выполнения. Выполните следующие действия:
try:
import Tkinter
except ImportError: # Python 3.x present
import tkinter
Однако в вашем случае вы уже знаете, что у вас есть Python 3, так что это не проблема. Просто используйте правильный (продолжайте читать в следующем разделе).
Модуль называется Tkinter
. Вы можете from Tkinter import *
и Tk
.
Модуль называется 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 для этого использования. Вы должны предоставить более подробную информацию, чтобы иметь возможность решить эту часть вашей проблемы.
Изменить: строка from tkinter import *
включает пространство имен файла __init__.py
в tkinter
модуля tkinter
в ваш файл. Поэтому вы должны проверить:
Где PyCharm импортирует модуль tkinter. Вы можете перейти к слову tkinter
в своем импортировании, получить контекстное меню с помощью правого клика и перейти к: Go to --> Declaration
(или просто нажать Ctrl+B
). Он должен доставить вас в этот файл __init__.py
где Tk
должен быть классом, определенным в нем.
Если ваш Python Path при запуске файла извлекает эту папку, вы нашли модуль Tk.
Если это не нормально, то это, вероятно, потому, что ваша установка нарушена. Я был бы полезен, если бы вы сказали нам, если только from tkinter import *
не работает или import tkinter; tkinter.Tk
import tkinter; tkinter.Tk
не определяется. Вы должны пойти на чистую установку.
Чтобы помочь нам узнать корень проблемы, попробуйте запустить тот же код с терминала или в консоли Python и посмотреть, что произойдет.
from tkinter import *
. почему Tk()
работает как есть?
Удалите первые 3 строки. Вы пробовали все возможные имена. Большинство из них не работают. Существует либо Tkinter
либо tkinter
, а tk()
- нет.
Tkinter
в первую строку. Этоtkinter
к ошибке, потому что ваша версия python должна импортироватьtkinter
нижнем регистре. Вы не можете просто добавить все возможные варианты импорта и надеяться на лучшее. Если вы импортируете что-то, чего нет, произойдет ошибка. Удалите все, что находится выше строкиimport tkinter
и измените ее наimport tkinter as tk
затем используйтеtk.
префикс для виджетов.