【问题标题】:Label textvariable wont display on secondary window. Python 3/Tkinter标签文本变量不会显示在辅助窗口上。 Python 3/Tkinter
【发布时间】:2014-01-15 00:14:06
【问题描述】:

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

值得注意的是,如果我将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 上方来让标签显示在另一个窗口中,但是我遇到了相反的问题。

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 谢谢布莱恩。我不知道有这样的限制。
    猜你喜欢
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 2014-12-04
    相关资源
    最近更新 更多