2016-05-14 3 views
-1

ボタンのテキストを変更しようとしています。ボタンにLBSがある場合は、ボタンをクリックするとそれがKGSに変更されます。ボタンにKGSがある場合は、ボタンをクリックするとLBSに変更されます。他の場合、ボタンが機能しない

ボタンは何もしませんが、コードは私にとって正しいようです。あなたのラインtext == LBS

from Tkinter import * 

myGui=Tk() 
myGui.geometry("200x100") 
myGui.title("basicGUI") 
myGui.configure(bg="gray") 

def toggle(): 
    text = "LBS" 
    if text == LBS: 
     tglBtn.config(text = KGS) 
    else: 
     tglBtn.config(text = LBS) 

LBS = StringVar 
tglBtn = Button(text="LBS", 
       textvariable=LBS, 
       command=toggle) 
tglBtn.pack() 

mainloop() 
+0

あなたは関数を実行するたびに '' LBS ''に' 'text'を設定するので、常に同じことをします。あなたはおそらく、ボタンがその上にあるテキストを読んだり、それ以上のものを読んで、真/偽の変数にそれを格納したり、その値に応じてテキストを設定することができます。 – Peter

+0

あなたは私に何を言っているのか分かりません。私は非常にPythonに新しいです、私はより良い手がかりをお願いします。 – rasPi2bSarah

答えて

1

あなたは括弧を追加しない限り、あなたはStringVarオブジェクトを作成していない:LBS = StringVar()StringVarは "LBS"または "KGS"になるため、この名前は誤解を招くものでもあります。 StringVarの全体点は、StringVarが値を変更するたびにボタンのテキストが自動的に更新されるということです。

from Tkinter import * 

myGui=Tk() 
myGui.geometry("200x100") 
myGui.title("basicGUI") 
myGui.configure(bg="gray") 

def toggle(): 
    if buttonText.get() == "LBS": 
     buttonText.set("KGS") 
    else: 
     buttonText.set("LBS") 

buttonText = StringVar() 
buttonText.set("LBS")  # you can't do StringVar("LBS") 
tglBtn = Button(textvariable=buttonText, 
       command=toggle) 
tglBtn.pack() 

mainloop() 
+0

ありがとう、他の人のソリューションを見てうれしいです。ありがとうございました – rasPi2bSarah

+0

コードで作業した後、私はそれが最高の答えだと感じました。それはStringVar、.setと一緒に.setを使用する方法を理解するのに役立ちました...私はあなたの最高のものとしてマークして申し訳ありませんが、今日はそれを変更しました。私は他の答えも好きです。おかげでジャスパー – rasPi2bSarah

+0

これは、より多くのtkinter機能を使用するので、本当に良い答えです。もう1つの解決策はよりシンプルですが、理解しやすくなります。 –

0

、あなたはstringtext)及び(StringVarあるLBS、)変数のインスタンスを比較しています。 textLBS.get()を比較するか、以下の例のように文字列を直接直接比較するだけです。


from Tkinter import * 

myGui=Tk() 
myGui.geometry("200x100") 
myGui.title("basicGUI") 
myGui.configure(bg="gray") 

def toggle(): 
    text = tglBtn.cget("text") 
    if text == "LBS": 
     tglBtn.config(text = "KGS") 
    else: 
     tglBtn.config(text = "LBS") 

tglBtn = Button(text="LBS", command=toggle) 
tglBtn.pack() 

mainloop() 
+0

BIG WOW !!!はい、私はテキストを正しく処理していないことを知っていましたが、機能を読み込ませる方法を知りませんでした。あなたの優れたpyプログラマー、そのようなきれいなソリューション。おかげで – rasPi2bSarah

+0

好奇心:あなたは.cgetを置く...なぜそれはちょうど得ることですか??? – rasPi2bSarah

+1

に '.get()'を追加すると、一度にすべての設定オプションが得られます。 – Jasper

関連する問題