9

シンプルな tkinter ウィンドウがあります。小さなウィンドウ、タイマー、タイマーを設定するボタンで構成されています。コードを詳しく説明したくありません。

ウィンドウ内のすべてのウィジェット (ボタン、ラベルなど) の背景を変更したい。

私の最初の考えは"red"、たとえば設定するグローバル変数を使用し、すべてのウィジェットbackgroundオプションをグローバル変数に関連付けることです。次に、ボタンを押すと、グローバル変数を"green"(すべてのウィジェットの背景が変更されるように) に変更しますが、何も起こりません。

私の理解は、ウィンドウを更新.mainloop()したようなものでした。アプリケーションを再起動せずに変数が変更されたときにウィジェットの背景色を変更するにはどうすればよいですか?

4

3 に答える 3

8

私の第一印象から、単純な例として、これはあなたが探しているものであるべきだと思います

from Tkinter import *

root = Tk()
global colour
global colourselection 
global count 
colour = ""
colourselection= ['red', 'blue']
count = 1

def start(parent):
    Tk.after(parent, 1000, change)

def change():
    global colour 
    global colourselection
    global count 
    if (count < 2 ):
        colour = colourselection[count]
        button.configure(bg = colour)
        count + 1
    else:
        colour = colourselection[count]
        button.configure(bg = colour)
        count = 1 
    start(root)



button = Button(text = 'start', command = lambda: start(root))
button.pack()

root.mainloop()

テストされていないため、問題を解決できると確信しています

于 2012-11-27T17:02:26.727 に答える
3

背景色は自動的に変更されません。Tkinter には、このようなことをフォントで行う機能がありますが、色ではできません。

すべてのウィジェットを反復処理して背景色を変更するには、いくつかのコードを記述する必要があります。

于 2012-11-27T18:14:58.927 に答える