Python, как передать var/значение из командной кнопки и использовать его в случае, если

#python #python-3.x #tkinter #ttk

Вопрос:

Как я могу передать var/значение из командной кнопки в def и реализовать его в if внутри def ChangConfWI, чтобы получить желаемое значение?

Имея 3 кнопки, мне нужно, чтобы в зависимости от того, на какую кнопку вы нажмете, она получала определенный var внутри деф ChangConfWI, для этого я использую оператор if

 global ocppurl, tiporeq, headers, payload, timeoutvar
ocppurl = "http://oxxxxxxx.com/xxxxxxx-ws/rest/xxxxx/"
headers = "{'Content-Type': 'application/json', 'stat': '00012'}"
timeoutvar = 30

def ChangConfWI(var):
    if var == wi:
        tiporeq = "onething"
        payload = json.dumps({0})
    elif var == wik:
        tiporeq = "something"
        payload = json.dumps({1})
    elif var == vliv:
        tiporeq = "congo"
        payload = json.dumps({2})

    pedido = str(ocppurl   tiporeq)   "nn"   str(headers)   "nn"   str(payload)   "nn"   "Timeout:"   str(timeoutvar)
    reqinp.delete('1.0', END)
    reqinp.insert(tk.INSERT, pedido)



ttk.Button(frmbut2, width="20", text="without inputs", command=ChangConfWI(wi)).grid(column=0,row=0, padx=10, pady=10)
ttk.Button(frmbut2, width="20", text="with invalid key", command=ChangConfWI(wik)).grid(column=0, row=1, padx=10,                                                                                 pady=10)
ttk.Button(frmbut2, width="20", text="with valid key amp; invalid value", command=ChangConfWI(vliv)).grid(column=0, row=2,
                                                                                                    padx=10, pady=10)
 

Комментарии:

1. Чего пытается достичь ваш код? Я не знаю твоей конечной цели.

2. Используйте a lambda в command аргументе.

3. Как сказал Бармар: измените command=ChangConfWI(wi) на command=lambda: ChangConfWI(wi)

4. спасибо всем вам, сделали это несколько раз в этом проекте и совершенно пусто

Ответ №1:

 ttk.Button(frmbut2, width="20", text="without inputs", command=lambda: ChangConfWI(1)).grid(column=0, row=0, padx=10, pady=10)