【问题标题】:Sum of variable got with a Radiobutton = 0使用 Radiobutton = 0 得到的变量总和
【发布时间】:2017-12-08 22:38:02
【问题描述】:

我正在尝试使用 python 做一个简单的程序,但它不起作用。在倒数第二个字符串中,我不知道如何从 Radiobutton 获取变量。

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()

【问题讨论】:

    标签: python variables tkinter sum radio-button


    【解决方案1】:

    现在,您在创建 UI 后更改标签的文本,并且由于没有选择任何内容,因此您得到 0。该文本应在每个 var/@ 更新987654325@更改。

    这可以通过为varivar 添加trace 来实现。

    def callback(*args):
        print(var.get()+ivar.get())
    
    var.trace("w", callback)
    ivar.trace("w", callback)
    

    这样,在每次选择按钮时,您都会获得所需的值。

    现在剩下一件事,就是更新结果标签。有几种方法可以更新标签的文本,但由于我们使用变量类,让我们使用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()。这会将None 分配给您的所有变量(cpukabysky 等)。
    关于这个,你可以阅读this问题的答案。

    【讨论】:

    • 我照你说的做了。但加数是写在 Radio-Button 行中的值。如您所见,我想为 Kaby 和 Sky 添加相同的值。我怎样才能做到这一点?我仍在使用 from tkinter import 因为我不知道我必须在下面写什么 - import tkinter -.
    • @T.Sala 我不认为,我明白你想要什么,但总的来说,如果你想在 var/ivar 更改时做某事,你需要在 callback 中做。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 2020-04-18
    • 2018-05-06
    • 1970-01-01
    • 2010-12-27
    相关资源
    最近更新 更多