1

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

值得注意的是,如果我替换textvariabletext(和其他必要的更改),它将按预期显示静态文本。

下面的示例代码:

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但是我遇到了相反的问题。

首先,为什么它不能按原样工作,以及如何让它像我描述的那样工作。

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

4

1 回答 1

0

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

于 2014-01-15T00:45:16.083 回答