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

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

ただいまの
回答率

88.61%

pythonでの画面遷移

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,939

PICCOLO

score 12

 前提・実現したいこと

pythonでtkinterを用いて画面遷移を行いたいと考えているのですが、思うようにプログラムを組んでみてもエラーが発生し、うまくできません。

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

_tkinter.TclError: cannot use geometry manager grid inside . which already has slaves managed by pack

 該当のソースコード

root = Tk()
root.title('分析')
root.geometry('720x1280')
window.grid_rowconfigure(0, weight=1)
window.grid_columnconfigure(0, weight=1)

mainframe = Frame(root)
mainframe.pack()

analisysframe = Frame(root)
analisysframe.grid(row=0, column=0, sticky="nsew")

def Analisys1():
    #---フレーム配置---
    analisys_frame1 = Frame(analisysframe,pady=10)
    analisys_frame1.pack()

    analisys_section1frame = Frame(analisysframe,pady=10)
    analisys_section1frame.pack()

    analisys_section2frame = Frame(analisysframe,pady=10)
    analisys_section2frame.pack()

    #---ここまで---

    analisys_heatlabel = Label(analisys_heatframe, text = 'メイン', font = 12)
    analisys_heatlabel.pack()

    #---ここから区間1---

    analisys_section1 = Label(analisys_section1frame,text = '区間1',font = 8)
    analisys_section1.pack(side = 'left')

    heat1_low = Spinbox(analisys_section1frame,from_ = 1, to = 60, increment = 1)
    heat1_low.pack(side = 'left')

    tilde = Label(analisys_section1frame,text = '  ~  ',font = 8)
    tilde.pack(side = 'left')

    heat1_high = Spinbox(analisys_section1frame,from_ = 1, to = 60, increment = 1)
    heat1_high.pack(side = 'left')

    #---ここから区間2---

    analisys_section2 = Label(analisys_section2frame,text = '区間2',font = 8)
    analisys_section2.pack()

    heat2_low = Spinbox(analisys_section2frame,from_ = 1, to = 60, increment = 1)
    heat2_low.pack(side = 'left')

    tilde = Label(analisys_section2frame,text = '  ~  ',font = 8)
    tilde.pack(side = 'left')

    heat2_high = Spinbox(analisys_section2frame,from_ = 1, to = 60, increment = 1)
    heat2_high.pack(side = 'left')

root.mainloop()

 試したこと

画面遷移をするためにanalisysframe をpackではなくgridにしています。記入はしておりませんがmainframeにも色々とウィジットを追加しており、analisysframe.pack()とするとAnalisys1()の中身がほとんどウィンドウ外に行ってしまい、スピンボックスも操作することができません。

 補足情報

mainframeは記入しておりませんが、mainframeの内容は全て動作確認済みです。また、Analisys1()mainframe内のボタンで呼び出し可能です。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

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

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

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

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

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

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

mainframe.pack()mainframe.grid(row=0, column=0, sticky="nsew")に変更することで画面遷移が可能になりました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 88.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

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