Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tkinter按钮的类-如何返回其值?_Python_Tkinter - Fatal编程技术网

Python tkinter按钮的类-如何返回其值?

Python tkinter按钮的类-如何返回其值?,python,tkinter,Python,Tkinter,我尝试创建一个类来生成一批按钮(4)。 我希望在按下每个按钮时获得它的统计信息——当我按下每个按钮时,只返回最后一个按钮的状态(4) 状态是为了在不按下按钮的情况下更改按钮的状态(模拟按钮按下的自动过程) 我做错了什么 class dev_buttons2(object): def __init__(self,master,buts_list): self.status=[] for i in range(len(buts_list)): self.var =

我尝试创建一个类来生成一批按钮(4)。 我希望在按下每个按钮时获得它的统计信息——当我按下每个按钮时,只返回最后一个按钮的状态(4)

状态
是为了在不按下按钮的情况下更改按钮的状态(模拟按钮按下的自动过程)

我做错了什么

class dev_buttons2(object):
  def __init__(self,master,buts_list):
    self.status=[]
    for i in range(len(buts_list)):
        self.var = IntVar()
        self.name=buts_list[i]
        self.c = Checkbutton(master,text=buts_list[i], variable=self.var,
        indicatoron=0,command=self.cb,width=10,height=2)
        self.c.grid(column=i, padx=5,row = 10)
        self.status.append(self.var)

def cb(self):
    #device_chage_state(devices_headers.index(self.name),self.status[i].get() )
    print(self.status[0].get())
    pass
def stat():
    return self.status

搜索答案时使用了
lambda
。 使用它可以传递一个参数,这个参数很好,但是我需要传递两个参数,而lambda不能这样做

我使用的一种解决方法是将参数
buts_list[I]
(按钮名称)和
var
(按钮的开/关值)作为列表传递给函数
cp
,使用
lambda
将它们分离回
change_device_state
函数中的两个参数

class dev_buttons2(object):
  def __init__(self,master,buts_list):
    self.status=[]
    self.buts=[]
    for i in range(len(buts_list)):
        var = StringVar()
        c = Checkbutton(master,text=buts_list[i], variable=var,
        indicatoron=0,command=lambda arg=[buts_list[i],var]: 
        self.cb(arg),width=10,height=2,onvalue="on",offvalue="off")
        c.grid(column=i, padx=5,row = 10)
        var.set("off")
        self.status.append(var)
        self.buts.append(c)

  def cb(self,but):
    device_chage_state(devices_headers.index(but[0]),but[1].get())

搜索答案时使用了
lambda
。 使用它可以传递一个参数,这个参数很好,但是我需要传递两个参数,而lambda不能这样做

我使用的一种解决方法是将参数
buts_list[I]
(按钮名称)和
var
(按钮的开/关值)作为列表传递给函数
cp
,使用
lambda
将它们分离回
change_device_state
函数中的两个参数

class dev_buttons2(object):
  def __init__(self,master,buts_list):
    self.status=[]
    self.buts=[]
    for i in range(len(buts_list)):
        var = StringVar()
        c = Checkbutton(master,text=buts_list[i], variable=var,
        indicatoron=0,command=lambda arg=[buts_list[i],var]: 
        self.cb(arg),width=10,height=2,onvalue="on",offvalue="off")
        c.grid(column=i, padx=5,row = 10)
        var.set("off")
        self.status.append(var)
        self.buts.append(c)

  def cb(self,but):
    device_chage_state(devices_headers.index(but[0]),but[1].get())

您可以使用
bind
并在按下或释放按钮时切换变量是否可以在开/关之间延迟?您在每次迭代中都使用
self.var
,这不是一种更简单的方法吗(因为我是python新手)。我不认为那是你打算做的。同样的情况也适用于
self.c
self.name
@Himal,我使用
self.var
每次迭代都可以更改每个按钮的状态,而不必按下
self.name
-是将标题从打开更改为关闭的命令,
self.c
是更改其颜色的命令,但在每次迭代中您也将覆盖
self.c
。您将只引用最后一个按钮
self.{variable}
将指向类中的同一内存位置。您将如何在
self.var
上存储四个单独的值?您可以使用
bind
并在按下或松开按钮时切换变量可在on/off之间延迟?您在每次迭代中都使用
self.var
,这不是一种更简单的方法吗(因为我是python新手)。我不认为那是你打算做的。同样的情况也适用于
self.c
self.name
@Himal,我使用
self.var
每次迭代都可以更改每个按钮的状态,而不必按下
self.name
-是将标题从打开更改为关闭的命令,
self.c
是更改其颜色的命令,但在每次迭代中您也将覆盖
self.c
。您将只引用最后一个按钮
self.{variable}
将指向类中的同一内存位置。如何在
self.var
上存储四个单独的值?