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

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

4

2 回答 2

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')
于 2013-03-18T10:12:19.807 回答
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)
于 2013-03-18T13:00:33.803 回答