Я создаю некоторые диалоги с помощью 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()
, что мне не нужно.