2

質問

プログラムでポップアップしている 2 つの Tkinter ルート ウィンドウを非表示にするにはどうすればよいですか? 使ってみましたroot.widthdraw()ここに私の Pastebin へのリンクがあります。

バックグラウンド

Tkinter と SMTP についてもっと学ぶために、本当に基本的な電子メール クライアントを作成しようとしています。私のプログラムは、ユーザーが資格情報を入力するトップレベルウィンドウを最初に作成し、サーバーがそれらを認証できる場合、プログラムは電子メール送信ダイアログを開くことにしました。困ったことに、プログラムの起動時に開く他の 2 つのルート ウィンドウを非表示にできませんでした。root.widthdraw()この問題を回避するために使用しようとしました。

関連コード

#-----Authen is a toplevel class-------------

passcheck = Authen()

root = Tk()
root.mainloop()
root.widthdraw()
4

2 に答える 2

2

他のウィンドウを作成する前に、ルート ウィンドウを作成する必要があります。それ以外の場合は、観察したとおりになります。Tkinter は、最初に他のウィジェットを作成するときにルート ウィンドウを自動的に作成し、2 つ目のウィジェットを作成します。

于 2013-04-14T01:21:43.340 に答える
1

tkinterデフォルトのパッケージでPython2.7 を実行していますが、rootオブジェクトにメソッドがありませんwithdraw()mainloopそれに加えて、toplevel呼び出されたものを実行することもできpasscheck、ウィンドウを節約できます。

class Authen(Frame):
    def __init__(self, master):
        Frame.__init__(self, master)

それから:

root = Tk()
passcheck = Authen(root) 
root.mainloop()

編集: の代わりに、代わりにそれを持って、Authenマスターとして渡します。http://pastebin.com/TtnvU0erTopLevelFrameroot

于 2013-04-14T01:13:40.000 に答える