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()

仕様Python2.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 に答える