问题
我已经为秒表编写了代码。在此,有一个重置秒表的功能。为此:我首先销毁当前窗口,然后创建一个新窗口。但是在这个过程中,窗口失去了键盘焦点。如何强制新窗口具有键盘焦点?
码
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
如果有人能指出我更好的实施方式(比如清理当前窗口并再次编写内容),我将不胜感激。
答案 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)