当我单独设置checkbutton时,能够正常运行
import tkinter as tk
from tkinter import *
from tkinter import ttk
window = tk.Tk()
columns = ['组序','热丝电流(A)','激光功率','送丝速度','焊接速度','对接间隙','得分']
def check(num):
print(checkvar[num],'=',checkvar[num].get())
checkvar = [None]*len(columns)#生成一个具有维度的空列表
for i in range(len(columns)):
checkvar[i] = tk.IntVar()
checkbutton = tk.Checkbutton(window,text=columns[i],variable=checkvar[i],command=lambda x=i: check(x))
checkbutton.deselect()
checkbutton.grid(row=i,column=0,sticky='w')
window.mainloop()
结果如下
但是当我将这段代码放到类中去就出现了如下问题,不管有没有选中,variable的返回值都为0,如下
import tkinter as tk
from tkinter import *
from tkinter import ttk
class nonlinear_fit_class:
def __init__(self):
#根窗口
self.root = tk.Tk()
self.button_nonlinear = tk.Button(self.root,text='非线性拟合',command=self.nonlinear_fit)
self.button_nonlinear.pack()
self.root.mainloop()
#定义非线性拟合函数
def nonlinear_fit(self):
window = tk.Tk()
columns = ['组序','热丝电流(A)','激光功率','送丝速度','焊接速度','对接间隙','得分']
def check(num):
print(checkvar[num],'=',checkvar[num].get())
checkvar = [None]*len(columns)#生成一个具有维度的空列表
for i in range(len(columns)):
checkvar[i] = tk.IntVar()
checkbutton = tk.Checkbutton(window,text=columns[i],variable=checkvar[i],command=lambda x=i: check(x))
checkbutton.deselect()
checkbutton.grid(row=i,column=0,sticky='w')
print(checkvar)
#button = tk.Button(window,text='应用',command=check).grid(row=1,column=0)
window.mainloop()
A = nonlinear_fit_class()
我就是希望能够通过选中checkbutton来索引对应checkbutton的名称,所以想借助variable的值来高速机器我选中了这个button,再获取button名称
能力有限,卡了两天都没解决这个问题,上网没找到类似问题,来这里寻求各位的帮助