使用tkinter,我希望创建一个按钮,当按下它时,它会在x秒内延迟切换。你知道吗
使用时间。睡眠(x) ,暂停整个程序,这不是我的本意。你知道吗
怎么做?你知道吗
followed-class of the“button”(有一个checkbutton小部件,一个labelwidget显示on/off label,还有一个entry小部件输入延迟秒数)
class dev_buttons2(object):
def __init__(self,master,buts_list):
self.status=[]
self.buts=[]
self.leds=[]
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=30,pady=5,row = 1)
var.set("off")
var1=IntVar()
ent=Entry(master,textvariable=var1,width=4)
ent.grid(column=i,row=2)
var2=StringVar()
led=Label(master,textvariable=var2,width=4,bg="red",fg="white",
relief="ridge")
var2.set("off")
led.grid(row=0,column=i)
self.status.append([var,var2,var1])
self.buts.append(c)
self.leds.append(led)
def cb(self,but):
indx=devices_headers.index(but[0])
if but[1].get()=="on":
self.status[indx][1].set(but[1].get())
self.leds[indx].config(bg="green")
if self.status[indx][2].get() !=0:
print(self.status[indx][2].get() )
if but[1].get()=="off":
self.status[indx][1].set(but[1].get())
self.leds[indx].config(bg="red")
尝试更新cb函数-获取延迟,但没有延迟:
def cb(self,but):
print(but[2].get()) ###(but[2] contains var1.get() -- timeout for opretion
indx=devices_headers.index(but[0])
device_chage_state(indx,but[1].get())
if but[2].get() >0 :
print ("switch off in %d seconds"%self.status[indx][2].get())
root.after(but[2].get(),self.cb,but)
既然您使用的是tkinter,那么最好的方法就是使用^{} method 。例如,可以添加如下方法:
然后在按钮创建更改中:
其中
delay_ms_var
是tkinter变量对象,它包含您希望在更改发生之前具有的以毫秒为单位的延迟。你知道吗相关问题 更多 >
编程相关推荐