【问题标题】:Python tkinter Radio Button Won't Change VariablePython tkinter 单选按钮不会更改变量
【发布时间】:2015-06-15 03:21:11
【问题描述】:

我正在尝试在 python 3.4.3 中使用单选按钮,并且单选按钮没有更改其分配的变量。我在这里错过了什么?

from tkinter import *
import tkinter

class c:
def __init__(self):
    self.master=tkinter.Tk()
    self.bvar=IntVar()
    rb1=Radiobutton(self.master,text="1",variable= self.bvar,value=1,command=self.rbselect).pack()
    rb2=Radiobutton(self.master,text="0",variable=self.bvar,value=0,command=self.rbselect).pack()

def rbselect(self):
    print(self.bvar)

def run(self):
    self.master.mainloop()

app=c()
app.run()

【问题讨论】:

  • 您的缩进不正确。如果要打印需要打印的值self.bvar.get()

标签: python tkinter radio-button


【解决方案1】:

需要使用 .get() 来比较 IntVar 实例:

from tkinter import *
import tkinter

class c:
    def __init__(self):
        self.master=tkinter.Tk()
        self.b=IntVar() 
        rb1=Radiobutton(self.master,text="1",variable= self.b,value=1,command=self.rbselect).pack()
        rb2=Radiobutton(self.master,text="0",variable= self.b,value=0,command=self.rbselect).pack()

    def rbselect(self):
        print(self.b.get())

    def run(self):
        self.master.mainloop()

app=c()
app.run()

【讨论】:

    【解决方案2】:

    如果通过“不更改其分配的变量”,您的意思是“无论我选择哪个,它总是打印 PY_VAR0”,是的,这是正常行为 - 打印 IntVar 不会为您提供有关什么值的任何信息它包含了。尝试改用get

    def rbselect(self):
        print(self.bvar.get())
    

    现在选择“1”单选按钮将打印“1”,同样打印“0”。

    【讨论】:

    • 谢谢,看来我不明白 intvar 和 int 之间的区别
    猜你喜欢
    • 2016-09-01
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    • 2016-09-11
    • 1970-01-01
    相关资源
    最近更新 更多