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が、逆の問題があります。

まず第一に、なぜそのままでは機能しないのか、説明したように機能させるにはどうすればよいのか。

2 つのウィンドウを持つことは一般的ではありませんが、1 つがメイン ディスプレイで、もう 1 つがコントロールであるため、このプロジェクトには必要です。

4

1 に答える 1

0

問題は、 のインスタンスが 2 つあることですTk。Tkinter は、そのクラスのインスタンスを 1 つだけ操作するように設計されています。複数のウィンドウが必要な場合は、次のインスタンスを作成しますToplevel

于 2014-01-15T00:45:16.083 に答える