Как создать дочернее окно и общаться с родителем в TkInter

Я создаю некоторые диалоги с помощью TkInter, и мне нужно иметь возможность открывать дочернее подокно (модальное или немодальное) при нажатии кнопки в родительском окне. Затем дочерний элемент позволит создать запись данных, и эти данные (либо запись, либо если операция была отменена) должны быть переданы обратно в родительское окно. На данный момент у меня есть:

import sel_company_dlg

from Tkinter import Tk

def main():
    root = Tk()
    myCmp = sel_company_dlg.SelCompanyDlg(root)
    root.mainloop()

if __name__ == '__main__':
    main()

Это вызывает диалог верхнего уровня, который позволяет пользователю выбрать компанию. Диалоговое окно выбора компании выглядит следующим образом:

class SelCompanyDlg(Frame):
    def __init__(self, parent):
        Frame.__init__(self, parent)
        self.parent_ = parent
        self.frame_ = Frame( self.parent_ )
        // .. more init stuff ..
        self.btNew_ = Button( self.frame_, text="New ...", command=self.onNew )

    def onNew(self):
        root = Toplevel()
        myCmp = company_dlg.CompanyDlg(root)

При нажатии кнопки Создать... отображается диалоговое окно «Создать компанию», которое позволяет пользователю заполнить сведения о компании и нажать «Создать» или «Отмена». Вот вступительная часть этого:

class CompanyDlg(Frame):
    def __init__(self, parent):
        Frame.__init__(self, parent)
        // etc.

Я борюсь с лучшим способом вызова дочернего диалога в onNew()— то, что у меня есть, работает, но я не уверен, что это лучший подход, а также , я не понимаю, как передать детали в дочерний диалог и из него.

Я пытался просмотреть онлайн-учебники/справочники, но то, что я нашел, либо слишком упрощенно, либо сосредоточено на таких вещах, как tkMessageBox.showinfo(), что мне не нужно.

7
задан Component 10 23 May 2012 в 10:27
поделиться