Форум сайта python.su
20
from Tkinter import * root = Tk() root.after(5000, lambda: root.focus_force()) root.mainloop()
from Tkinter import * root=Tk() def lol(): return root.focus_force() root.after(5000, lol()) root.mainloop()
Отредактировано noob_saibot (Апрель 4, 2014 19:33:28)
Офлайн
58
Я вообще не понял вопроса. Что Вы хотите выяснить?
Офлайн
20
4kpt_II1. Почему без lambda root.after не отрабатывает как надо?
Я вообще не понял вопроса. Что Вы хотите выяснить?
from Tkinter import * root = Tk() root.after(5000, lambda: root.focus_force()) root.mainloop()
from Tkinter import * root=Tk() def lol(): return root.focus_force() root.after(5000, lol()) root.mainloop()
Отредактировано noob_saibot (Апрель 6, 2014 14:17:32)
Офлайн
58
А что Вы хотите реализовать?
Офлайн
20
4kpt_IIМне надо чтобы сразу открывалось окно, далее через 5 секунд отрабатывал focus_force.
А что Вы хотите реализовать?

Отредактировано noob_saibot (Апрель 6, 2014 14:27:39)
Офлайн
58
Понял. Теоретически нужно так, но у меня root всегда отрабатывает в фокусе, поэтому не могу проверить:
from Tkinter import * # root = Tk() # def lol(): root.focus_force() # root.after(5000, lol) root.mainloop()
from Tkinter import*
Офлайн
20
Вот нашёл.
def after(self, ms, func=None, *args): """Call function once after given time. MS specifies the time in milliseconds. FUNC gives the function which shall be called. Additional parameters are given as parameters to the function call. Return identifier to cancel scheduling with after_cancel.""" if not func: # I'd rather use time.sleep(ms*0.001) self.tk.call('after', ms) else: def callit(): try: func(*args) finally: try: self.deletecommand(name) except TclError: pass name = self._register(callit) return self.tk.call('after', ms, name)
if not func: # I'd rather use time.sleep(ms*0.001) self.tk.call('after', ms)
Отредактировано noob_saibot (Апрель 6, 2014 15:14:25)
Офлайн
58
Что Вы имеете ввиду? Можно без lambda.
Просто в первом посту Вы передавали не объект функции, а объект результата ее выполнения. Поэтому и не работало.
Так неверно в принципе:
root.after(5000, lol())
root.after(5000, lol)
root.after(5000, lol(12))
root.after(5000, lambda: lol(12))
Отредактировано 4kpt_II (Апрель 6, 2014 15:47:08)
Офлайн