标签文本变量不会显示在辅助窗口上。 Python 3 / Tkinter

时间:2014-01-15 00:14:06

标签: python-3.x tkinter label multi-window

我想一次在多个窗口上显示相同的标签(textvariable),但它只显示首先创建的窗口上的内容。标签出现在另一个上,但它基本上是一个空字段。

有趣的是,如果我将textvariable替换为text(以及其他必要的更改),它将按预期显示静态文本。

以下示例代码:

from tkinter import *

root = Tk()
root.overrideredirect(1)

root2 = Tk()
root2.protocol("WM_DELETE_WINDOW", exit)

class SubsLight(Frame):
    def __init__(self, parent=None, **kw):
        Frame.__init__(self, parent, kw)
        self.T1Subs = 'A'
        self.T2Subs = 'B'
        self.T1Subsstr = StringVar()
        self.T2Subsstr = StringVar()
        self.Subset()

    def Subset(self):
        self.T1Subsstr.set(self.T1Subs)
        self.T2Subsstr.set(self.T2Subs)
        T1Sub = Label(root, textvariable=self.T1Subsstr, font=("Arial", 20), fg='#fff188188', bg='black', width=1, padx=5, pady=5)
        T2Sub = Label(root, textvariable=self.T2Subsstr, font=("Arial", 20), fg='#fff188188', bg='black', width=1, padx=5, pady=5)
        T1Sub.grid()
        T2Sub.grid()

        T12Sub = Label(root2, textvariable=self.T1Subsstr, font=("Arial", 20), fg='#fff188188', bg='black', width=1, padx=5, pady=5)
        T12Sub.grid()
        T12Sub = Label(root2, textvariable=self.T2Subsstr, font=("Arial", 20), fg='#fff188188', bg='black', width=1, padx=5, pady=5)
        T12Sub.grid()

sub = SubsLight(root)

def main():
    sub.grid()

    root.mainloop()

if __name__ == '__main__':
    main()

我可以通过将root2移到root以上来让标签显示在其他窗口中,但我遇到了相反的问题。

首先,为什么它不能正常工作,如何按照我的描述使其工作。

我意识到有两个窗口不常见,但是这个项目是必要的,因为一个是主显示器,另一个是控件。

1 个答案:

答案 0 :(得分:0)

问题是您有两个Tk个实例。 Tkinter旨在与该类的一个实例一起使用。如果您需要多个窗口,请创建Toplevel

的实例