2017-07-05 6 views
0

私はPythonを使って簡単なプログラムを実行しようとしていますが、動作しません。最後から2番目の文字列では、ラジオボタンから変数を取得する方法がわかりません。変数の合計がRadiobutton = 0

from tkinter import* 
import tkinter.messagebox 

finestra = Tk() 
finestra.geometry("1000x800+100+0") 
finestra.title("Consumo PC") 
var = IntVar() 
ivar = IntVar() 
cpu = Label(text="Seleziona la generazione del tuo processore:").pack() 
kaby = Radiobutton(finestra,text="Kabylake",value=1, variable=var).pack() 
sky = Radiobutton(finestra,text="SkyLake",value=2, variable=var).pack() 
ivy = Radiobutton(finestra,text="IvyBridge",value=3, variable=var).pack() 

serie = Label(text="Seleziona il tuo processore:").pack() 
i3 = Radiobutton(finestra,text="i3 xxxx",value=6, variable=ivar).pack() 
i5 = Radiobutton(finestra,text="i5 xxxx",value=4, variable=ivar).pack() 
i7 = Radiobutton(finestra,text="i7 xxxx",value=5, variable=ivar).pack() 

brand = Label(text="Seleziona il brand della tua scheda video:").pack() 
amd = Radiobutton(finestra,text="AMD", value=7,variable=3).pack() 
nvidia = Radiobutton(finestra,text="Nvidia", value=8,variable=3).pack() 

kaby = 1 
sky = 1 
ivy = 11/10 
i3 = 51 
i5 = 65 
i7 = 75 

tdp = Label(text=var.get()+ivar.get()).pack() 


finestra.mainloop() 

答えて

1

、あなただけのとすぐに、あなたのUIを作成して、選択されたもののいずれもいるので、あなたはテキストがすべてのvar/ivar変化に更新する必要があります0を得ているとして、ラベルのテキストを変更しています。

これは、varivartraceを追加することで実現できます。

def callback(*args): 
    print(var.get()+ivar.get()) 

var.trace("w", callback) 
ivar.trace("w", callback) 

これを使用すると、すべてのボタンを選択するたびに、目的の値が得られます。

残っているものが1つ残っています。これは、resulラベルを更新しています。ラベルのテキストを更新するにはいくつかの方法がありますが、変数クラスを使用しているので、StringVarを使ってやりましょう。

def callback(*args): 
    result.set(var.get()+ivar.get()) 

result = StringVar() 

tdp = Label(textvariable=result).pack() 
       ^^^^^^^^ note that this not text but textvariable!  

また、知っておくべきことがいくつかあります。

ワイルドカードのインポート(from tkinter import *用)です。
これについては、this質問の回答を読むことができます。

他は、同じ行にpack()を使用しています。これにより、すべての変数(cpukabyskyなど)にNoneが割り当てられます。
これについては、this質問の回答を読むことができます。

+0

私はあなたが言ったようにしました。しかし、加数はラジオボタンの行に書かれた値です。私はKabyとSkyに同じ値を追加したいと思います。これどうやってするの?私はまだtkinterのインポートから使用しています。なぜなら、私はtkinterをインポートするために何を書きなさいか分からないからです。 –

+0

@ T.Sala私はあなたが望むものを理解しているとは思いませんが、全体的に、var/ivarが変更されたときに何かしたいのであれば、 'callback'でそれを行う必要があります。 – Lafexlos

関連する問題