2013-03-18 52 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)