【问题标题】:tkinter checkbutton values printtkinter 检查按钮值打印
【发布时间】:2020-09-14 00:22:27
【问题描述】:

我创建了创建作物列表的检查按钮。我想打印用户选择的裁剪,但它总是给我打印相同的裁剪(和我没有选择的裁剪)有人知道穿了什么吗?

def set_check(event):
    global b
    var_lst=[]



    for widget in radios:
        widget.destroy()
    if cb_elemnt.get(): # get the crops according to element selection
        if cb_elemnt.get() != "N":
            crop_values = 
pd.unique(df.loc[df["elemnt"].eq(cb_elemnt.get()),"crop"])
        else:
            crop_values = pd.unique (df_nir.loc[df_nir["elemnt"].eq 
(cb_elemnt.get ()), "crop"])


    for num, t in enumerate(crop_values, 1): # create and add the crops to check button with number start from
        chkValue =IntVar ()
        checkbox_variable = IntVar ()
    # I need seperate var for each crop
        b = Checkbutton (top, text=t, variable=checkbox_variable, font=("Segoe UI Light", 10))
        checkbox_variables.append (checkbox_variable)
        b.grid (row=num, column=2, sticky='W', padx=40)
        radios.append (b)

def regression():
#PLSR
if cb_elemnt.get () != "N":
    if var1.get():
        element_u= cb_elemnt.get () #The element that the user selected
        print(element_u)
        for checkbox in checkbox_variables:  
            if checkbox.get ()==1:
                print(b.cget("text"))

【问题讨论】:

  • 您可以将onvalue = 1, offvalue = 0设置为Checkbutton
  • 默认没有?我正在尝试打印用户标记的按钮的文本,无论我选择什么,它总是打印相同的文本

标签: python user-interface tkinter


【解决方案1】:

让我们看看你在做什么:

您运行一个循环,不断将b 重新分配为不同的Checkbuttonb 将永远是您创建的最后一个 Checkbutton

for num, t in enumerate(crop_values, 1):
    b = Checkbutton (top, text=t, variable=checkbox_variable, font=("Segoe UI Light", 10))

稍后您将b 视为可以神奇地成为您在任何给定时间需要的任何Checkbutton

for checkbox in checkbox_variables:  
    if checkbox.get ()==1:
        print(b.cget("text"))

解决方案:

创建一个list of Checkbutton,其索引与您的checkbox_variables list 直接相关。

例子:

for row, text in enumerate(crop_values, 1): 
    checkbox_variables.append(IntVar())
    checkboxes.append(Checkbutton(top, text=text, variable=checkbox_variables[-1], font=("Segoe UI Light", 10)))
    checkboxes[-1].grid(row=row, column=2, sticky='W', padx=40)

#and ...

for checkbox, var in zip(checkboxes, checkbox_variables):
    if var.get():
        print(checkbox['text'])

编辑:
进一步阅读您的代码后,您已经将Checkbutton 附加到?radios?(大声笑),但未能使用radios 在下一个循环中获取相应的Checkbutton。顺便说一句:RadiobuttonCheckbutton 不是一回事。 Checkbutton 是一个单独的 boolean 值。 Radiobutton 是一组 boolean 值,其中一个必须是 True,只有一个可以是 True。您应该更准确地考虑变量名称。如果您也开始使用Radiobutton 会怎样?你会怎么称呼list,你需要把它们放进去?

【讨论】:

    猜你喜欢
    • 2015-09-16
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 2017-03-08
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多