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

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

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

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

Tkinter

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

解決済

1つのウィンドウで画面遷移を行うには、どうすればよいのか。

threeeverytwo
threeeverytwo

総合スコア49

Python 3.x

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

Tkinter

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

1回答

2評価

2クリップ

21375閲覧

投稿2018/03/06 15:10

前提・実現したいこと

画面1から、画面2に遷移できるようにしたい。(画面1と別にウィンドウが作られるのではなく、画面1のウィンドウに画面2が表示されるようにする。下記のコードは、メインウィンドウとは、別にウィンドウを作っています。)

画面1:
イメージ説明
画面2:
イメージ説明

発生している問題・エラーメッセージ

該当のソースコード

画面1(MainWindow.py)

python

# -*- coding: utf-8 -*- #==================================================================================== # ライブラリ #==================================================================================== # GUIを扱う import tkinter # tkinterよりデザインが良くなる from tkinter import ttk # 名前入力画面を扱う import InputNameWindow as inw #==================================================================================== # 関数定義 #==================================================================================== #------------------------------------------------------------------------------------ # startボタンを押したときの処理 #------------------------------------------------------------------------------------ def startCommand(): inw.main() #==================================================================================== # 本体関数 #==================================================================================== # main関数を追加し、スコープを切る def main() -> None: # インスタンス生成 window = tkinter.Tk() # ウィンドウタイトルを決定 window.title("WORDPRACTICE") # ウィンドウの大きさを決定 window.geometry("800x600") ### タイトル表示 #--- ラベル生成 # 空白 spaceLabel1 = [tkinter.Label(window, text="") for column in range(10)] spaceLabel2 = [tkinter.Label(window, text="") for column in range(3)] # タイトル titleLabelFont = ("Helevetice", 32, "bold") titleLabel = ttk.Label(window, text="WORDPRACTICE", font=titleLabelFont) #--- ラベル配置 # 空白 for index in range(10): spaceLabel1[index].pack() # タイトル titleLabel.pack() ### ボタン表示 #--- ボタン生成 startButton =\ ttk.Button(window, text=" Start ", command=startCommand) #--- ボタン配置 # 空白 for index in range(3): spaceLabel2[index].pack() # ボタン startButton.pack() # プログラムを始める window.mainloop() #==================================================================================== # 本体処理 #==================================================================================== if __name__ == "__main__": main()

画面2(InputNameWindow.py)

python

# -*- coding: utf-8 -*- #==================================================================================== # ライブラリ #==================================================================================== # GUIを扱う import tkinter # tkinterよりデザインが良くなる from tkinter import ttk #==================================================================================== # 関数定義 #==================================================================================== #------------------------------------------------------------------------------------ # #------------------------------------------------------------------------------------ #==================================================================================== # 本体関数 #==================================================================================== def main() -> None: # インスタンス生成 window = tkinter.Tk() # ウィンドウタイトルを決定 window.title("WORDPRACTICE") # ウィンドウの大きさを決定 window.geometry("800x600") ### 空白 #--- ラベル生成 spaceLabel1 = [tkinter.Label(window, text="") for column in range(5)] # タイトル titleLabelFont = ("Helevetice", 18) titleLabel =\ ttk.Label(window, text="ユーザー名を入力してください。", font=titleLabelFont) #--- ラベル配置 # 空白 for index in range(5): spaceLabel1[index].pack() # タイトル titleLabel.pack() ### フレーム表示 #--- フレーム生成 frame = ttk.Frame(window) #--- フレーム配置 frame.pack() ### ユーザー名入力表示 #--- ラベル生成 # 空白 spaceLabel2 = [tkinter.Label(frame, text="") for column in range(3)] # ユーザー名 userNameLabelFont = ("Helevetice", 14) userNameLabel = ttk.Label(frame, text="ユーザー名:", font=userNameLabelFont) #--- ラベル配置 # 空白 for index in range(3): spaceLabel2[index].grid(row=index, column=0) # ユーザー名 userNameLabel.grid(row=4, column=0) #--- エントリー生成 userName = tkinter.StringVar() userNameEntry = ttk.Entry(frame, textvariable=userName, width=30) #--- エントリー配置 userNameEntry.grid(row=4, column=1) ### ボタン表示 #--- ボタン生成 okButton = ttk.Button(frame, text=" OK ") #--- ボタン配置 okButton.grid(row=4, column=3) # プログラムを始める window.mainloop()

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

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

Tkinter

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