娱乐后,窗口正在失去键盘焦点

时间:2013-03-18 09:55:43

标签: python tkinter

问题

我已经为秒表编写了代码。在此,有一个重置秒表的功能。为此:我首先销毁当前窗口,然后创建一个新窗口。但是在这个过程中,窗口失去了键盘焦点。如何强制新窗口具有键盘焦点?

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

如果有人能指出我更好的实施方式(比如清理当前窗口并再次编写内容),我将不胜感激。

2 个答案:

答案 0 :(得分: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')

答案 1 :(得分: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)