2013-03-18 2 views
0

проблемыокно теряет фокус клавиатуры после отдыха

Я написал код для секундомера. В этом есть функция сброса секундомера. И для этого: сначала уничтожу настоящее окно, а затем создаю новое окно. В процессе, однако, окно теряет фокус клавиатуры. Как заставить новое окно иметь фокус клавиатуры?

код

def reset(self,event=None): 
    self.quitwin() ##Closing the window that is open now 

    self.__init__() ##Creating a new window 

def quitwin(self,event=None): 
    self.window.destroy() 

функции Python 2.7

Я также был бы признателен, если кто-то может мне точку в направлении более эффективной реализации (например, очищая настоящее окно и снова писать вещи).

ответ

1

Попробуйте модуль tkMessageBox и tkCommonDialog, в них вы найдете ответы.
Посмотрите их исходный код, они включены в состав Python
папка Python \ Lib \ lib-tk \
И нужно ли удалить окно, возможно, просто изменить содержимое?
Для кнопки, вы можете сделать так:

>>> import tkinter 
>>> r=Tkinter.Tk() 
>>> b=Tkinter.Button(r,text='aaa') 
>>> b.pack() 
>>> b['text']='bbb' 

Для текстового виджета, вы можете сделать это

>>> t=Tkinter.Text(r) 
>>> t.pack() 
>>> t.insert('1.0','aaa') 
>>> t.delete('1.0','end') # clear text widget 
>>> t.insert('1.0','bbb') 
0

Я нашел решение. Просто уничтожьте существующий кадр и просто создайте рамку снова, не затрагивая окно.

Делая это, окно не теряет фокус клавиатуры, и вещи воссозданы так, как они были раньше.

код

def reset(self,event=None): 
     self.frame.destroy() 

     self.frame = Frame(self.window,width=300,height=200) ##The frame instance 
     self.frame.pack_propagate(0) ##Making sure that the window does not shrink 

     self.frame.pack(fill=None) 
Смежные вопросы