【问题标题】:Checkbutton values on Tkinter not changing [duplicate]Tkinter上的Checkbutton值没有改变[重复]
【发布时间】:2015-07-12 14:06:27
【问题描述】:

我是 Tkinter 的新手,我希望 Checkbutton 在选中时打印一个字符串,在未选中时打印一个字符串。但是,self.value 始终返回 PY_VAR0,无论该框是否被勾选。

from tkinter import *

class New:
    def __init__(self, master):
        value = StringVar()
        self.value = value
        frame = Frame(master)

        self.c = Checkbutton(
            master, text="Expand", variable=value,onvalue="Yes",
            offvalue="No",command=self.test)
        self.c.pack(side=LEFT)

    def test(self):
        if self.value == "Yes":
            print("Yes!")
        if self.value == "No":
            print("Not!")
        else:
            print(self.value)

root = Tk()
app = New(root)

root.mainloop()

【问题讨论】:

    标签: python button tkinter


    【解决方案1】:

    尝试使用

    if self.value.get() == "Yes":
    

    而不是

    if self.value == "Yes":
    

    在您尝试访问复选按钮的值的任何地方都相同。

    还有,最好用

        if self.value.get() == "Yes":
            print("Yes!")
        else:
            if self.value.get() == "No":
                print("Not!")
            else:
                print(self.value.get())
    

    因为如果是“是”,使用您的版本将打印两次该值。

    【讨论】:

    • 我认为如果 if/else(if/else) 语句只是一个 if/elif/else 语句会更容易:if self.value.get()=="Yes": print("Yes!)"; elif self.value.get()=="No": print("Not!"); else: print(self.value.get())
    猜你喜欢
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    • 2020-11-30
    • 1970-01-01
    • 2020-05-04
    • 1970-01-01
    相关资源
    最近更新 更多