【问题标题】:Widgets on created window appear on parent window instead创建窗口上的小部件改为出现在父窗口上
【发布时间】:2011-08-02 23:54:01
【问题描述】:

我有一个弹出选项窗口的按钮,当我尝试在新窗口中填充小部件时,它们仅出现在父窗口中。

这里是相关代码:

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)

【问题讨论】:

  • 既然你有一个可行的解决方案,你还在寻找答案还是我们应该关闭这个问题?

标签: python tkinter python-2.5


【解决方案1】:

尝试将原始 btnOptionsClick() 函数的第一行设为 ...

opt = Toplevel()

然后将其余部分保持原样。

【讨论】:

    猜你喜欢
    • 2018-10-14
    • 1970-01-01
    • 2010-09-26
    • 2011-09-03
    • 2014-11-15
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多