Разница между импортированием tkinter как tk и из импорта tkinter
Я знаю, что это глупый вопрос, но я только начинаю изучать python, и у меня нет хорошего знания python. Мой вопрос в том, в чем разница между
from Tkinter import *
а также
- Как создать окно сообщения с помощью tkinter?
- TK_LIBRARY и TCL_LIBRARY переменные окружения на Ubuntu
- Как добавить пространство между двумя виджетами, размещенными в сетке в tkinter ~ python?
- Tkinter: Привязать ключ для выбора следующего окна и прокрутки списка этого окна
- Python 3 pyQt4 обновление GUI с переменными из нескольких модулей / классов
import Tkinter as tk
Почему я не могу просто написать
import Tkinter
Может ли кто-нибудь пощадить несколько минут, чтобы просветить меня?
- NameError: глобальное имя «END» не определено
- Что может привести к тому, что диалоговое окно открытого файла в Tkinter / Python будет очень медленно закрываться после того, как пользователь выберет файл?
- Tkinter tkFileDialog не существует
- Невозможно установить значение с помощью скрипта tkinter / python при использовании cxfreeze
- Python / Tkinter: мышь перетаскивает окно без границ, например. overridedirect (1)
2 Solutions collect form web for “Разница между импортированием tkinter как tk и из импорта tkinter”
from Tkinter import *
импортирует каждый открытый объект в Tkinter в ваше текущее пространство имен. import Tkinter
импортирует «пространство имен» Tkinter в ваше пространство имен и import Tkinter as tk
делает то же самое, но «переименовывает» его локально в «tk», чтобы сохранить типизацию
скажем, у нас есть модуль foo, содержащий классы A, B и C.
Затем import foo
дает вам доступ к foo.A, foo.B и foo.C.
Когда вы import foo as x
вас есть доступ к ним тоже, но под именами xA, xB и xC from foo import *
будет импортировать A, B и C прямо в ваше текущее пространство имен, чтобы вы могли получить к ним доступ с помощью A, B и C.
Существует также from foo import A, C
будет импортировать A и C, но не B в ваше текущее пространство имен.
Вы также можете сделать from foo import B as Bar
, который сделает B доступным под названием Bar (в вашем текущем пространстве имен).
Итак, обычно: когда вы хотите только один объект модуля, вы делаете from module import object
или from module import object as whatiwantittocall
.
Если вам нужны некоторые модули, вы import module
или import module as shortname
чтобы сохранить ввод.
from module import *
не рекомендуется, так как вы можете случайно изменить («переопределить») имена и можете потерять трек, какие объекты принадлежат этому модулю.
Вы, безусловно, можете использовать
import Tkinter
Однако, если вы это сделаете, вам нужно будет префикс каждого имени класса Tk, которое вы используете с Tkinter.
,
Это довольно неудобно.
С другой стороны, следующее:
import Tkinter as tk
устраняет проблему, только требуя, чтобы вы tk.
вместо Tkinter.
,
Относительно:
from Tkinter import *
это, как правило, плохая идея, по причинам, обсуждаемым в разделе Следует ли избегать импорта подстановочных знаков?