#python #tkinter #visual-studio-code
#python #tkinter #visual-studio-code
Вопрос:
Я кодировал на Python в Visual Studio Code. Я начал с Tkinter. Я запускал следующий код (см. Прикрепленное Изображение), и он не работал, однако он работал в оболочке Python. Все подробности на картинке, что такое ошибка Image: [1]: https://i.stack.imgur.com/Nx0b6.png
Это код:
from tkinter import *
root= Tk()
topFrame = Frame(root)
topFrame.pack()
bottomFrame = Frame(root)
bottomFrame.pack(side=BOTTOM)
button1 = Button(topFrame, text="button 1", fg="red")
button2 = Button(topFrame, text="button 2", fg="orange")
button3 = Button(topFrame, text="buton 3", fg="yellow")
button4 = Button(topFrame, text="button 4", fg="green")
button1.pack()
button2.pack()
button3.pack()
button4.pack()
root.mainloop()
ошибка:
NameError: name 'Tk' is not defined
Комментарии:
1. Какую операционную систему вы используете? У вас установлена только одна копия python? Если вы используете Windows, как вы установили python?
2. Я регулярно устанавливал python — из магазина Microsoft. Расширение Python для Visual Studio я установил из приложения.
Ответ №1:
Приоритет импорта python:
- текущий каталог
- текущий каталог пользователя
- глобальный каталог
Судя по предоставленному скриншоту, файл сценария имеет то же имя, что и модуль, который вы пытаетесь использовать: tkinter
(см. Пункт N1 из приоритета). Кроме того, импорт был выполнен с использованием «*», проверка во время импорта не выполняется, независимо от того, имеет модуль Tk
объект / класс или нет
Чтобы избежать проблемы: переименуйте свой файл во что-то другое.
Лучшие практики:
- Не импортируйте через glob, иначе «*», вместо этого используйте строгий импорт
- не называйте файлы так же, как существующие стандартные библиотеки
Ответ №2:
Если C:Users …Desktoptkinter.py это ваш файл скрипта, созданный вручную.
Попробуйте переименовать C:Users …Desktoptkinter.py к другому. Например my_tkinter.py .
Вероятно, Python использует tkinter.py файл модуля в том же каталоге, что и visualStudioCode.py которые не являются библиотечным модулем по умолчанию.