質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Q&A

解決済

1回答

571閲覧

Tkinter での画面遷移

ChaCha_MaRu

総合スコア15

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

0グッド

0クリップ

投稿2019/01/13 12:10

編集2019/01/15 23:33

あるシステムを作成しています。
ログイン画面を通して、ある値が入力されたときのみ入力画面へいけるようにしたいです。
今のままでは、ログイン画面においてタブを閉じる右上の赤い×をおすと入力画面へ行ってしまいます。ログイン画面のタブを閉じるとプログラムを終了するにはどうすればよいでしょうか。

python3

1# -*- coding: utf-8 -*- 2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

質問でこれほど長いコードを提示する必要はあるのでしょうか?一般的にはNOです。本件についてもそう思えます。

ご質問のコードはせんじ詰めれば次のようなものです。

Python

1import ... 2 3def login_gui(): # login画面の表示 4 ... 5 6def create_gui(): # 入力画面の表示 7 ... 8 9login_gui() # login画面を表示する 10 11def select_gui(): # 何か別の画面の表示 12 ... 13 14create_gui() # 入力画面の表示

最終行でcreate_gui関数を無条件に呼び出していますね。それが原因だと思います。

質問者さんご自身で、

  • コードの全体構造を整理したり
  • 画面遷移だけを確認するような小さなコードであらかじめ実験したり
  • このコードでcreate_gui先頭へブレークポイントを設定してデバッグしたり

といったことをしさえすれば前述の原因に気づけたはずと思わずにはいられません。そうしたことをせずに質問してしまったため「不必要に長いコードを添付し回答がつきにくいような質問をする羽目になった」のではないでしょうか?

なお、本プログラムの制御構造の良し悪し、本来どうしたらよいかといったより進んだアドバイスは自分にはできそうにないです。自分ならアプリケーションの中でroot.main_loop()は一度しか呼ばない前提で設計するのですが、ご質問のコードのように画面遷移ごとにmain_loopを呼び出しても期待どおりの動作になるようには見えます。「動いているように見えることと、正しい制御構造かどうか」は必ずしも一致しないのですがどちらがより望ましいか(知識・経験不足のため)わかりませんでした。

投稿2019/01/13 14:22

KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問