单击按钮时传递小部件名称

2024-09-27 20:20:56 发布

您现在位置:Python中文网/ 问答频道 /正文

有人可以帮助,我需要生成10个按钮,然后当我点击它时,必须更改未命名按钮上的文本

正在尝试获取event.widget,但未成功

from tkinter import ttk

root = ttk()

def gonow(e):
    e.config(text="clicked")

for x in range(0, 10):

     ttk.Button(root, name="but"+x,width="30", height=3, text=x).grid( column=0, 
     r.ow=0, padx=10, pady=5)        

     butok=ttk.Button(root, width="30", height=3, text=x, command=lambda var="but"+x: 
     gonow(var)).grid( column=0, row=0, padx=10, pady=5)
    

if __name__ == "__main__":
    root.mainloop()

新更新

                    b = tk.Button(frm_txt_json_case_btn, width="30", height=3, text=str(titulo+" "+cherep), fg=fcolor,relief=relifst, borderwidth=4,command=lambda titulo=titulo,wrd2srch=words2search,assumirrow=assumirrow,hiden_row=assumirrowr,resp_kib=resp_kiblog,repkib=repkib,urrrl=url_conf, jsump=jsonreq, explis=expectresq, frm_txt_json_case_tit=frm_txt_json_case_tit, inp_cond_protocol=inp_cond_protocol, resp_json=resp_json_input,lblexp=lblexpect, reqtxt=reqst_input,frm_txt_json_case_btn=frm_txt_json_case_btn: ChangConfWI(reqtxt, lblexp, frm_txt_json_case_tit, resp_json, inp_cond_protocol,urrrl, jsump, explis,frm_txt_json_case_btn,repkib,resp_kib,wrd2srch,hiden_row,assumirrow,titulo))
                    b.grid(column=colcount, row=rowcount, padx=10, pady=5)
                    buttonslst.append(b)

                    valbut=int(assumirrowr)-8
                    print(valbut)
                    print(buttonslst[valbut])
                    fvarbut=buttonslst[valbut]
                    print(fvarbut)

                    ttk.Button(frm_but_oknot, width="15", text="OK", image=photoOK, command=lambda assumirrow=assumirrow,filename=filename_report,exp=lblexpect,obs=resp_kiblog,urrrl=url_conf,tipo_de_conf=tipo_de_conf, resp_json_input=resp_json_input, reqst_input=reqst_input: savetoxls("geradorteste",resp_json_input,reqst_input, "OK",tipo_de_conf,urrrl,obs,exp,filename,assumirrow,fvarbut)).grid( column=0, row=0, padx=1, pady=15)
               

Tags: texttxtjsoninputconfbuttonrootwidth
1条回答
网友
1楼 · 发布于 2024-09-27 20:20:56

当您将x传递给gonow时,它是按钮的索引,而不是按钮本身。您可以将按钮存储在列表中(注意:按钮,而不是grid的结果!),然后使用索引:

buttons = []
for x in range(0, 3):
     b = tk.Button(root, width=30, height=3, text=x, command=lambda x=x: gonow(buttons[x]))
     b.grid(column=0, row=x, padx=10, pady=5)
     buttons.append(b)

或在创建按钮后推迟命令创建并传递按钮本身:

for x in range(0, 3):
     b = tk.Button(root, width=30, height=3, text=x)
     b.config(command=lambda b=b: gonow(b))
     b.grid(column=0, row=x, padx=10, pady=5)

(注意:代码中还有一些不相关的(语法)错误需要修复。)

相关问题 更多 >

    热门问题