95378


Tkinterを使用して、上下キーを押すとCanvas内のFrameを切り替えるプログラムを作成しています。  
プログラム自体には問題がないはずですが、なぜかFrameの切り替えが正常に動作しません。  
どのように修正すればよいでしょうか。

以下が現在のコードです:

[code]

    import tkinter as tk
    #白いフレームを表示
    def switch_to_frame2(event):
       frame1.pack_forget()
       canvas.create_window((0, 0), window=frame2, anchor="nw")
    
    #黒いフレームを表示
    def switch_to_frame1(event):
       frame2.pack_forget()
       canvas.create_window((0, 0), window=frame1, anchor="nw")
    
    root=tk.Tk()
    
    canvas = tk.Canvas(root)
    #フレームを作成
    frame1 = tk.Frame(canvas,width=500,height=500,bg="black")
    frame2= tk.Frame(canvas,width=500,height=500,bg="white")
    
    #キーイベント
    root.bind("<Up>",switch_to_frame2)
    root.bind("<Down>",switch_to_frame1)
    
    canvas.pack()
    
    canvas.create_window((0, 0), window=frame1, anchor="nw")
    
    root.mainloop()
    
[/code]

上記のコードはFrameの切り替えを試みるもので、上キーで白いフレームが、下キーで黒いフレームが表示されるはずです。  
しかし、一度切り替えると、以後切り替える事ができなくなります。  
問題の修正方法を知りたいです。  
どうぞよろしくお願いします。


CC BY-SA 4.0
2023-06-26T07:16:57.497
95377
2023-06-26T07:55:14.307
58849
question
python python3 tkinter
TkinterでFrameの切り替えができない

[code]

    import tkinter as tk
    #白いフレームを表示
    def switch_to_frame2(event):
       global canvas, frame1, window_id
       canvas.itemconfig(window_id, window=frame2)
    
    #黒いフレームを表示
    def switch_to_frame1(event):
       global canvas, frame2, window_id
       canvas.itemconfig(window_id, window=frame1)
    
    root=tk.Tk()
    
    canvas = tk.Canvas(root)
    #フレームを作成
    frame1 = tk.Frame(canvas,width=500,height=500,bg="black")
    frame2= tk.Frame(canvas,width=500,height=500,bg="white")
    
    #キーイベント
    root.bind("<Up>",switch_to_frame2)
    root.bind("<Down>",switch_to_frame1)
    
    canvas.pack()
    
    window_id = canvas.create_window((0, 0), window=frame1, anchor="nw")
    
    root.mainloop()
    
[/code]


CC BY-SA 4.0
2023-06-26T07:55:14.307
95378
2023-06-26T07:55:14.307
47127
95377
answer