У tkinter проблемы при переносе кода 2.x на 3.x, атрибут модуля 'tkinter' не существует

ОБНОВЛЕНО: СМОТРЕТЬ НИЖЕ

Я портировал код для этого назначения:http://www.stanford.edu/class/cs221/progAssignments/PA1/search.html (весь исходный код доступен в виде zip) от Python 2.x до 3.x. Обратите внимание, что портирование - это не задание, а просто я стараюсь обновлять код и избегать установки другой версии Python ...

После обычного 2.x -> 3.x исправления синтаксиса (печать, поднятие исключений и т. Д.) И осознание того, что модульTkinter теперь известен какtkinter в 3.x (в нижнем регистре) я столкнулся с незнакомыми проблемами, с этим фрагментом и несколькими другими подобными:

def keys_pressed(d_o_e=tkinter.tkinter.dooneevent,d_w=tkinter.tkinter.DONT_WAIT)

Ошибки имеют тип:

AttributeError: 'module' object has no attribute 'tkinter'

Завершение кода в моей среде IDE и переменная трассировка действительно указывают на то, чтоtkinter модуль не имеет атрибута или подклассаtkinter под которым можно сослаться наdooneevent или жеDONT_WAIT, Тем не менее, есть несколько других ссылок в Интернете людей, использующих такие конструкции, как

_tkinter.dooneevent(_tkinter.DONT_WAIT)

продвинуть основной цикл вперед, но даже ссылка на него по-прежнему приводит к той же ошибке.

Любые идеи с благодарностью.

ОБНОВЛЕНИЕ: обращение к _root_window через лямбда-нотацию, кажется, работает, так как в нем больше не жалуется время перед выполнением в большинстве случаев. Однако, на мой неопытный взгляд, это в основном «магия», и поэтому я мало представляю, что говорит эта последующая ошибка или как ее обойти. Метод теперь выглядит так, с моими изменениями в первой строке:

def move_to(object, x, y=None, d_o_e=lambda arg: _root_window(arg), d_w=tkinter._tkinter.DONT_WAIT):
    if y is None:
        try: x, y = x
        except: raise  'incomprehensible coordinates'

    horiz = True
    newCoords = []
    current_x, current_y = _canvas.coords(object)[0:2] # first point
    for coord in  _canvas.coords(object):
      if horiz:
        inc = x - current_x
      else:
        inc = y - current_y
      horiz = not horiz

      newCoords.append(coord + inc)

    _canvas.coords(object, *newCoords)
    d_o_e(d_w)

и ошибка, которую я получаю:

TypeError: 'Tk' object is not callable              

ссылка на строку, где определен метод (первая строка выше).

Ответы на вопрос(1)

Ваш ответ на вопрос