我想一次在多个窗口上显示相同的标签(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
以上来让标签显示在其他窗口中,但我遇到了相反的问题。
首先,为什么它不能正常工作,如何按照我的描述使其工作。
我意识到有两个窗口不常见,但是这个项目是必要的,因为一个是主显示器,另一个是控件。
答案 0 :(得分:0)
问题是您有两个Tk
个实例。 Tkinter旨在与该类的一个实例一起使用。如果您需要多个窗口,请创建Toplevel