【问题标题】:Checkbox list values only saying all unchecked?复选框列表值只表示所有未选中?
【发布时间】:2019-05-20 09:08:51
【问题描述】:

我正在尝试设置一个定义,因此当人们选择他们想要的复选框时,当他们按下保存按钮时,它会打印它是否选中或未选中。但是,所有这些都是未经检查的。

顺便说一句,它正在使用 Tkinter

我曾尝试在 checkbutton 事件中使用 onvalue 和 offvalues,但它不起作用

def checker():
    global var_list
    var_list = [var1.get(), var2.get(), var3.get(), var4.get(), 
    var5.get(), 
    var6.get(), var7.get(), var8.get(), var9.get(), var10.get()]
for var in var_list:
        if var == 1:
            print('checked')
        else:
            print('unchecked')


var1 = IntVar()
var2 = IntVar()
var3 = IntVar()
var4 = IntVar()
var5 = IntVar()
var6 = IntVar()
var7 = IntVar()
var8 = IntVar()
var9 = IntVar()
var10 = IntVar()
Checkbutton(event_1_window, text= web_1_title[0] + " " + web_1_date[0], 
variable=var1).grid(row=0, sticky=W)
Checkbutton(event_1_window, text= web_1_title[1] + " " + web_1_date[1], 
variable=var2).grid(row=1, sticky=W)
Checkbutton(event_1_window, text= web_1_title[2] + " " + web_1_date[2], 
variable=var3).grid(row=2, sticky=W)
Checkbutton(event_1_window, text= web_1_title[3] + " " + web_1_date[3], 
variable=var4).grid(row=3, sticky=W)
Checkbutton(event_1_window, text= web_1_title[4] + " " + web_1_date[4], 
variable=var5).grid(row=4, sticky=W)
Checkbutton(event_1_window, text= web_1_title[5] + " " + web_1_date[5], 
variable=var6).grid(row=5, sticky=W)
Checkbutton(event_1_window, text= web_1_title[6] + " " + web_1_date[6], 
variable=var7).grid(row=6, sticky=W)
Checkbutton(event_1_window, text= web_1_title[7] + " " + web_1_date[7], 
variable=var8).grid(row=7, sticky=W)
Checkbutton(event_1_window, text= web_1_title[8] + " " + web_1_date[8], 
variable=var9).grid(row=8, sticky=W)
Checkbutton(event_1_window, text= web_1_title[9] + " " + web_1_date[9], 
variable=var10).grid(row=9, sticky=W)


var_list = [var1.get(), var2.get(), var3.get(), var4.get(), var5.get(), 
var6.get(), var7.get(), var8.get(), var9.get(), var10.get()]

它说一切都未选中,即使我已经选中了程序中的每个框。

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    看起来你可能有缩进错误或类似的东西。我没有修改您的 checker 函数,只是添加了您的代码中缺少的一些变量,它似乎可以正常工作。

    from tkinter import *
    
    
    
    def checker():
        global var_list
        var_list = [var1.get(), var2.get(), var3.get(), var4.get(), 
        var5.get(), 
        var6.get(), var7.get(), var8.get(), var9.get(), var10.get()]
        for var in var_list:
            if var == 1:
                print('checked')
            else:
                print('unchecked')
    
    event_1_window = Tk()
    
    web_1_title = ["title{0}".format(i) for i in range(10)]
    web_1_date = ["date{0}".format(i) for i in range(10)]
    
    var1 = IntVar()
    var2 = IntVar()
    var3 = IntVar()
    var4 = IntVar()
    var5 = IntVar()
    var6 = IntVar()
    var7 = IntVar()
    var8 = IntVar()
    var9 = IntVar()
    var10 = IntVar()
    Checkbutton(event_1_window, text= web_1_title[0] + " " + web_1_date[0], 
    variable=var1).grid(row=0, sticky=W)
    Checkbutton(event_1_window, text= web_1_title[1] + " " + web_1_date[1], 
    variable=var2).grid(row=1, sticky=W)
    Checkbutton(event_1_window, text= web_1_title[2] + " " + web_1_date[2], 
    variable=var3).grid(row=2, sticky=W)
    Checkbutton(event_1_window, text= web_1_title[3] + " " + web_1_date[3], 
    variable=var4).grid(row=3, sticky=W)
    Checkbutton(event_1_window, text= web_1_title[4] + " " + web_1_date[4], 
    variable=var5).grid(row=4, sticky=W)
    Checkbutton(event_1_window, text= web_1_title[5] + " " + web_1_date[5], 
    variable=var6).grid(row=5, sticky=W)
    Checkbutton(event_1_window, text= web_1_title[6] + " " + web_1_date[6], 
    variable=var7).grid(row=6, sticky=W)
    Checkbutton(event_1_window, text= web_1_title[7] + " " + web_1_date[7], 
    variable=var8).grid(row=7, sticky=W)
    Checkbutton(event_1_window, text= web_1_title[8] + " " + web_1_date[8], 
    variable=var9).grid(row=8, sticky=W)
    Checkbutton(event_1_window, text= web_1_title[9] + " " + web_1_date[9], 
    variable=var10).grid(row=9, sticky=W)
    
    button = Button(event_1_window, text="Check", command=checker)
    button.grid(row=10,sticky=W)
    
    var_list = [var1.get(), var2.get(), var3.get(), var4.get(), var5.get(), 
    var6.get(), var7.get(), var8.get(), var9.get(), var10.get()]
    

    【讨论】:

    • 嗯,是的,您的解决方案似乎可以按照我想要的方式完美运行。我觉得这可能是一个缩进问题,而且我不得不交换大量的定义,因为这一切都很混乱。我会试一试。非常感谢!
    • 你是对的,一定是某种奇怪的排序或缩进问题。我将代码移到程序的顶部,它运行良好。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 2016-11-06
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多