Форум сайта python.su
0
Такой вопрос. Когда прописываю в кнопку вызов функции (command= ) без переменных, все работает. Если прописываю переменные - сначала срабатывает прописанная функция, затем вызываемая, а кнопка перестает работать. Как использовать переменные тогда? Или с button нельзя?
Например:
def Hello(): root = Tk() button = Button(root, command=callback) button.pack() root.mainloop() def callback(): print("Ok") Hello()
def Hello(): root = Tk() button = Button(root, command=callback("Ok")) button.pack() root.mainloop() def callback(word): print(word) Hello()
from tkinter import * def Hello(): root = Tk() button1 = Button(root, command=ok) button1.pack() button2 = Button(root, command=notok) button2.pack() root.mainloop() def ok(): callback("ok") def notok(): callback("not ok") def callback(word): print(word) Hello()
Отредактировано gleda (Окт. 6, 2016 14:39:59)
Офлайн
49
Можно. Оберните вызов в lambda
# def callback(first, second): print(first, second) # but = Button(root, text="Text", command=lambda: callback(first=1, second=2))
Если использовать bind, то в волшебном event он передает уйму полезного. В том числе и ссылку на виджет, который его вызвал.# def callback(event): print(event.widget["text"]) # but1 = Button(root, text="first") but1.bind("<Button-1>", callback) but2 = Button(root, text="second") but2.bind("<Button-1>", callback)
Офлайн
0
Спасибо за ответ!
Офлайн