Программирование на Python: получение «name 'Tk' не определено» только в командной строке, работает в IDLE - PullRequest
3 голосов
/ 26 ноября 2011

Вопрос от новичка, только начинающего с Tkinter. Я скачал его и написал учебник Hello World, и он отлично работал в IDLE. Однако когда я сохранил программу и запустил ее с помощью командной строки, все они вернули NameError: name 'tk' is not defined. Я также попытался зайти в основную командную программу Python и вручную ввести код, и он работал нормально.

Не удается распознать Tk() только при запуске через командную строку или двойным щелчком.

Понятия не имею, что здесь может происходить.

Код - это просто базовая Hello World программа, которую все уроки учат писать:

from Tkinter import *
root = Tk()
w = Label(root, text="Hello World")
w.pack()

root.mainloop()

Кроме того, поскольку я знаю, что все будут отвечать с ним, я не использую 3.x, и я попытался запустить программу, назвав ее «tkinter», она просто не находит модуль.

Очевидно, что эта программа работает на компьютерах других людей, так что это не проблема с самим кодом. Кто-нибудь знает, что может быть причиной этой проблемы?

Ответы [ 9 ]

4 голосов
/ 26 ноября 2011

Прекрасно работает на моем компьютере.

Поскольку Вы сказали: NameError: имя 'tk' не определено.

здесь tk с небольшим 't'

Вымог бы написать

root = tk()

вместо:

root = Tk()

Check Capital 'T'

3 голосов
/ 11 июля 2016

Полагаю, это как-то связано с

  1. в версии Python, используемой
  2. как вы в основном импортировали библиотеку

Для python 2.x используйте это

from Tkinter import *

root = Tk()

root.mainloop()

ИЛИ

from tkinter import *

root = tkinter()

root = mainloop()
1 голос
/ 01 октября 2014

У меня была та же проблема, и я не мог найти никакого решения, пока я просто не изменил это:

from Tkinter import *

на:

from tkinter import *

Я не знаю заглавную Tработает для других, но под Windows 64 бит Python 3.4.1, это должно быть "tkinter"

1 голос
/ 26 ноября 2011

Python распространяется с различными сборками, некоторые из которых включают Tkinter, а некоторые нет.

То, что вы описываете, является симптомом наличия нескольких Python в вашей системе.Когда вы запускаете IDLE, очевидно, что вы работаете с установленным Tkinter.Тот, который доступен в командной строке, очевидно, нет.Один из способов подтвердить это - попытаться запустить IDLE из командной строки: python -m idlelib.idle.Если IDLE не запускается, Tkinter не устанавливается, и вам нужно будет найти путь к версии, которая успешно запускает IDLE.

0 голосов
/ 06 декабря 2018

Также проверьте имя вашего файла, если вы создали tkinter.py ранее, то это также может вызвать такую ​​же проблему.Сначала будет импортировано

0 голосов
/ 18 ноября 2018

Это будет хорошо работать для Python 3:

from Tkinter import *
import Tkinter as tk

window = tk.Tk()
window.title("Welcome to LikeGeeks app")
window.mainloop()
0 голосов
/ 01 февраля 2018

от tkinter import *

root = Tk ()

импорт с использованием строчной буквы t и использование заглавной буквы T в TK

это сработало для меня

0 голосов
/ 12 октября 2017

Думал, это поможет в отношении "tk notfined"

from tkinter import *
import tkinter.tkFileDialog
root = tkinter.Tk('Anything you want is displayed')
0 голосов
/ 15 июля 2017

Для Python 2.x используйте:

from Tkinter import * as tk
import Tkinter as tk
root = Tk()

Для Python 3 используйте:

from tkinter import * as tk
import tkinter as tk
root = tk.Tk()
...