2017-07-28 19 views
0

オプションメニューからの選択に基づいてラベルを更新する際に問題があります。以下は、私のコードの実施例である:Tkinter:OptionMenuの選択が変更されたときにラベルを変更します。

import Tkinter as tk 
from Tkinter import * 

secs = ['Subject', 'Difficulty', 'Percent', 'Grade', 'Pass'] 

master = Tk() 
v = StringVar(master) 
v.set(secs[0]) 
def on_option_change(event): 
    #lab2.destroy() 
    lab2 = tk.Label(master, text=v.get()) 
    lab2.grid(row=2, column=1) 
w = OptionMenu(master, v, *secs, command=on_option_change) 
w.grid(row=1, column=0) 
lab1 = tk.Label(master, text='Current value:') 
lab1.grid(row=2, column=0, sticky=E) 
lab2 = tk.Label(master, text=secs[0]) 
lab2.grid(row=2, column=1, sticky=W) 
mainloop() 

問題は、新しいオプションが選択されている場合、古いラベルが新しいものの後ろに残っていることです。簡単な修正で

UnboundLocalError: local variable 'lab2' referenced before assignment 

任意の提案が最もいただければ幸いです。私は古いラベルを破壊するためにコードを追加する場合しかし、私は、当然のことながら、エラーが発生します。私はTkinterとGUI作成一般にはかなり初心者です。私は数時間、少し役に立たない答えを探していました。

答えて

0

は、最初の行でon_option_change関数内で、この「グローバルLAB2」を書き込むことにより、LAB2変数グローバル作ります。

+0

素晴らしい!ありがとう!それが十分に簡単なのであれば、それがなぜ私の学習のために説明されましたか? – davo1979

関連する問題