簡體   English   中英

tkinter Button類-如何返回其值?

[英]Class for tkinter Button- how to return its value?

我嘗試創建一個類來產生一批按鈕(4)。 我希望在按下每個按鈕時獲得它們的統計信息-當我按下每個按鈕時,僅返回最后一個按鈕的狀態(4)

status更改是為了在不按下按鈕的情況下更改按鈕的狀態(模擬按鈕按下的自動過程)

我究竟做錯了什么?

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 使用它可以傳遞參數,這很好 ,但是我需要傳遞兩個argumetns ,而lambda`不能做到這一點。

我使用的一種解決方法是使用lambda函數cp將參數buts_list[i] (按鈕的名稱)和var (按鈕的開/關值)作為列表傳遞,以將參數分隔回change_device_state函數中的2個參數。

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())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM