从spinbox获取变量(Python)

时间:2017-07-07 19:07:52

标签: python variables tkinter

finestra = Tk()
var = IntVar() #i did the same with the others variable except for the spin
cpu = Label(text="Seleziona la generazione del tuo processore:").pack()
core = Radiobutton(finestra,text="Core",value=1, variable=var)
core.pack()
x = Radiobutton(finestra,text="2 duo/ 2 quad",value=5/3, variable=var)
x.pack()


serie = Label(text="Seleziona il tuo processore:").pack()
i3 = Radiobutton(finestra,text="i3 xxxx/Pentium",value=51, variable=ivar)
i3.pack()
i5 = Radiobutton(finestra,text="i5 xxxx",value=65, variable=ivar)
i5.pack()
i7 = Radiobutton(finestra,text="i7 xxxx",value=75, variable=ivar)
i7.pack()

brand = Label(text="Seleziona la tua scheda video:").pack()
Radiobutton(finestra,text="GTX 1050", value=70,variable=gvar).pack()
Radiobutton(finestra,text="GTX 1050ti", value=75,variable=gvar).pack()

Label(text="Seleziona il numero di banchi di RAM e il loro quantitativo")
ram = Spinbox(finestra, from_=1, to=4).pack()

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

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

result = StringVar()

tdp = Label(textvariable=result).pack()

finestra.mainloop()

好吧,我希望当我在旋转框中插入1或... 4时,此值与gvar以及ivar和var的乘积相加。 我还有另一个问题。在第6行有一小部分,但是当我运行程序时,即使它没有给出错误,它也可以理解为5(不是5/3)。你能解释一下我怎样才能使用有理数? PS:抱歉我的意大利语 - 英语

1 个答案:

答案 0 :(得分:0)

修正了一些事情。 ram = Spin .... pack()不返回旋转对象,但是没有。 5/3问题是Python假设整数除法,除非你在至少一个参数上放置一个小数点(5.0.3工作)。这应该可以帮助你。

from tkinter import *

finestra = Tk()
var = DoubleVar(value=5.0/3) #i did the same with the others variable except for the spin
ivar = IntVar(value=65)
gvar = IntVar(value=70)
spin = StringVar()
cpu = Label(text="Seleziona la generazione del tuo processore:").pack()
core = Radiobutton(finestra,text="Core",value=1, variable=var)
core.pack()
x = Radiobutton(finestra,text="2 duo/ 2 quad",value=5.0/3, variable=var)
x.pack()


serie = Label(text="Seleziona il tuo processore:").pack()
i3 = Radiobutton(finestra,text="i3 xxxx/Pentium",value=51, variable=ivar)
i3.pack()
i5 = Radiobutton(finestra,text="i5 xxxx",value=65, variable=ivar)
i5.pack()
i7 = Radiobutton(finestra,text="i7 xxxx",value=75, variable=ivar)
i7.pack()

brand = Label(text="Seleziona la tua scheda video:").pack()
Radiobutton(finestra,text="GTX 1050", value=70,variable=gvar).pack()
Radiobutton(finestra,text="GTX 1050ti", value=75,variable=gvar).pack()

Label(text="Seleziona il numero di banchi di RAM e il loro quantitativo")
ram = Spinbox(finestra, from_=1, to=4, textvariable=spin).pack()

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

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

result = StringVar(value='none')

Label(textvariable=result).pack()

finestra.mainloop()