Виджеты в созданном окне отображаются вместо родительского. - PullRequest
0 голосов
/ 03 августа 2011

У меня есть кнопка, которая выскакивает в окне параметров, когда я пытаюсь заполнить виджеты в новом окне, они появляются только в родительском окне.

вот соответствующий код:

from Tkinter import *
class MainWindow:
    def __init__(self, master):
        """builds main window."""
        windowAttr = {"width":450, "height":150}
        window = Frame(master, windowAttr).grid()
        btnAttr = {"text":"Options", "width":12, "height":1}
        self.btnOptions = Button(window, btnAttr, command=btnOptionsClick).place(x=360, y=5)

class Options:
    def __init__(self, optMaster):
        """Builds and displays the options window"""
        optAttr = {"width":300, "height":200}
        optWin = Frame(optMaster, optAttr).grid()
        self.chkMon = Checkbutton(optWin, text="Mon").place(x=50, y=50)

def btnOptionsClick():
    opt = Tk(className='Options')
    optionsApp = Options(opt)
    opt.mainloop()

root = Tk(className='Main Window')
app = MainWindow(root)
root.mainloop()

chkMon появляется в MainWindow, а Options всегда пуст, я хочу, чтобы chkMon появлялся в Options, а не в MainWindow.

Я очень плохо знаком с Python, поэтому я благодарен за любую помощь, которую могут получить знающие люди.

редактирование: Я нашел рабочее решение, удалил класс Options и изменил def btnOptionsClick () на:

def btnOptionsClick():
    opt = Toplevel(root, takefocus=True)
    chkMon = Checkbutton(opt, text="Mon").place(x=50, y=50)

1 Ответ

0 голосов
/ 03 августа 2011

Попробуйте сделать так, чтобы первая строка вашей исходной функции btnOptionsClick () была ...

opt = Toplevel()

, а затем оставьте все как есть.

...