Поскольку «MessageBox» представляет собой модуль в пакете «Tkinter», почему я должен использоватьПри импорте модуля «messagebox» tkinter, синтаксис «import tkinter.messagebox» не работает?
from tkinter import messagebox
вместо
import tkinter.messagebox
Я был под впечатлением, что импортировать модуль в пакета я должен был бы использовать следующий синтаксис:
import package_name.module_name
Спасибо за помощь.
Да, вообще говоря, вы правы: 'messagebox' - это модуль в пакете' tkinter', и с любым нормальным модулем Python вы должны иметь возможность импортировать его с помощью синтаксиса. Тем не менее, похоже, что tkinter делает некоторую магию при импорте (возможно, какое-то кэширование), возможно, по причинам использования производительности/памяти. Обратите внимание, например, что если вы * first * do 'из tkinter import messagebox', а затем' import tkinter.messagebox', второй синтаксис действительно работает. –
Также попробуйте 'import tkinter' и сравните' dir (tkinter) 'перед тем, как вы делаете' из tkinter import messagebox' и после. Итак, чтобы подвести итог: ваше понимание модулей и пакетов Python является правильным, это определенная странность Tkinter. –
... а потом у вас есть 'import tkMessageBox' – joaquin