在Button中使用方法后的tkinter

时间:2017-01-07 07:57:05

标签: python tkinter

我想实现一个函数,当单击Button时,相关的函数将按周期完成。我该怎么办?我按如下方式编写代码。我建议点击“开始”按钮,然后获取功能将按周期完成。我使用True同时执行此操作,但功能已停止

def fetch(ent,t):    
    i=0    
    w3username=ent[0].get()+'\n'    
    info.append(w3username)    
    w3passwd=ent[1].get()+'\n'    
    info.append(w3passwd)    
    emailname=ent[2].get()+'\n'    
    info.append(emailname)    
    emailpasswd=ent[3].get()+'\n'    
    info.append(emailpasswd)  

    for i in info:    
        t.insert(END,i)

def makeframe(root,fields):    
    entry=[]    
    variables=[]   

    for field in fields:    
        row=Frame(root)    
        lab=Label(row,width=10,text=field)    
        ent=Entry(row)    
        row.pack(side=TOP,fill=X)    
        lab.pack(side=LEFT)    
        ent.pack(side=RIGHT,expand=YES,fill=X)    
        var=StringVar()    
        var.set('enter here')    
        ent.configure(textvariable=var)    
        variables.append(var)
    return variables


if __name__=='__main__':

    info=[]    
    root=Tk()    
    root.title('iCare tool')    
    fileds=['w3username','w3passwd','emailuser','emailpasswd']    
    entry=makeframe(root,fileds)    
    t=Text(root)    
    Button(root,text='begin',command=(lambda:fetch(entry,t))).pack(side=LEFT,expand=YES,fill=X)    
    t.pack(side=BOTTOM)

    root.mainloop()

我也使用after方法,但仍无效

b = Button(root, text='begin', command=(lambda:fetch(entry,t)))    
b.after(1000, fetch, entry, t)    
b.pack()

1 个答案:

答案 0 :(得分:1)

Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); v.vibrate(pattern, -1); 只执行一次函数。您必须在after

中使用after
fetch()