tkinterの画面の切り替えを学習していたのですが謎のエラーが出ました。
サイトからコピペしたコードではエラーは出ないのですが自分で写しながら書いたコードのみエラーが出ました。
エラーメッセージ
Traceback (most recent call last):
File "ファイル名", line 30, in <module>
bt_gomarubatu.pack()
File "/Users/ /opt/anaconda3/lib/python3.8/tkinter/init.py", line 2387, in pack_configure
self.tk.call(
_tkinter.TclError: cannot use geometry manager pack inside . which already has slaves managed by grid
因みにこの行を消してみたところ次のbt_backhome.pack()でも同じエラーが出てその行も消すと正常に動きました。
自分で写しながら書いたコードはホーム画面とゲーム画面を切り替えるためのもので関数名やウィジェットの名前などを元のコードから変えました。
自分が写しながら書いたコード↓
python
1#!/usr/bin/env python 2# -*- coding: utf8 -*- 3import tkinter as tk 4import tkinter.ttk as ttk 5 6def gomarubatu(): 7 frame_marubatu.tkraise() 8 9 10def gohome(): 11 frame_main.tkraise() 12 13 14if __name__ == "__main__": 15 #メインウィンドウの設定 16 root = tk.Tk() 17 root.title("home") 18 root.geometry("300x150") 19 #メインウィンドウのグリッドを1x1にする 20 root.grid_rowconfigure(0, weight=1) 21 root.grid_columnconfigure(0, weight=1) 22 #フレームの作成と設置 23 frame_main = ttk.Frame(root) 24 frame_main.grid(row=0, column=0, sticky="nsew", pady=20) 25 26 #メインウィンドウのウィジェットの設定と配置 27 lb_home = ttk.Label(frame_main, text="HOME") 28 bt_gomarubatu = ttk.Button(text="まるばつゲーム", command=gomarubatu) 29 lb_home.pack() 30 bt_gomarubatu.pack() 31 32 #まるばつフレームの作成と設置 33 frame_marubatu = ttk.Frame(root) 34 frame_marubatu.grid(row=0, column=0, sticky="nsew", pady=20) 35 36 #まるばつウィンドウのウィジェットの設置と設定 37 lb_marubatu = ttk.Label(frame_marubatu, text="まるばつゲーム") 38 bt_backhome = ttk.Button(text="メインに戻る", command=gohome) 39 lb_marubatu.pack() 40 bt_backhome.pack() 41 42 #メインフレームを全面にする 43 frame_main.tkraise() 44 45 root.mainloop()
元のコード↓
python
1# tkinterのインポート 2import tkinter as tk 3import tkinter.ttk as ttk 4 5def change_app(): 6 frame_app.tkraise() 7 8def change_main(): 9 frame.tkraise() 10 11if __name__ == "__main__": 12 # rootメインウィンドウの設定 13 root = tk.Tk() 14 root.title("tkinter application") 15 root.geometry("300x150") 16 17 # rootメインウィンドウのグリッドを 1x1 にする 18 root.grid_rowconfigure(0, weight=1) 19 root.grid_columnconfigure(0, weight=1) 20 21 22 # メインフレームの作成と設置 23 frame = ttk.Frame(root) 24 frame.grid(row=0, column=0, sticky="nsew", pady=20) 25 26 # 各種ウィジェットの作成 27 label1_frame = ttk.Label(frame, text="メインウィンドウ") 28 entry1_frame = ttk.Entry(frame) 29 button_change = ttk.Button(frame, text="アプリウィンドウに移動", command=change_app) 30 31 # 各種ウィジェットの設置 32 label1_frame.pack() 33 entry1_frame.pack() 34 button_change.pack() 35 36 # アプリフレームの作成と設置 37 frame_app = ttk.Frame(root) 38 frame_app.grid(row=0, column=0, sticky="nsew", pady=20) 39 40 # 各種ウィジェットの作成 41 label1_frame_app = ttk.Label(frame_app, text="アプリウィンドウ") 42 entry1_frame_app = ttk.Entry(frame_app) 43 button_change_frame_app = ttk.Button(frame_app, text="メインウィンドウに移動", command=change_main) 44 45 # 各種ウィジェットの設置 46 label1_frame_app.pack() 47 entry1_frame_app.pack() 48 button_change_frame_app.pack() 49 50 # frameを前面にする 51 frame.tkraise() 52 53 root.mainloop()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/29 08:30