現在、独学でpythonを弁窮しております。
作っているプログラムが、キーを押したら別画面に遷移するというプログラムです。
別画面に遷移するにはシーンを増やしていくのですが、シーンは増えても前画面の表示が上手くdeleteされていないので、プログラムを書き換えたり、増やしてみたりしてみたのですがなかなか上手くいきません。どこがどのように違うかご教授いただきたいです。
長々と汚いコードで申し訳ございません。下にコードを添付しましたのでご確認お願いします。
import tkinter scene = 0 font1 =("Century",30) font2 =("Century",20) key = "" def key(e): global key key = e.keysym def main(): global scene canvas.delete("STATUS") canvas.create_text(100,30,text="シーン"+str(scene),fill="black",font=font2,tag="STATUS") if scene == 0: canvas.create_text(200,150,text="タイトル",fill="black",font=font1,tag="TITLE") canvas.create_text(200,250,text="スペースキーで次の画面に",fill="lime",font=font2,tag="TITLE") canvas.create_text(230,280,text="[P]でポーズボタンに",fill="lime",font=font2,tag="TITLE") if key == "space": canvas.delete("TITLE") canvas.create_rectangle(0,0,400,300,fill="orange",tag="GAMEOVER") canvas.create_text(200,150,text="ゲームオーバー",fill="black",font=font1,tag="GAMEOVER") canvas.create_text(200,250,text="[b]でタイトルに戻る",fill="lime",font=font2,tag="GAMEOVER") scene = 1 elif key == "p": canvas.delete("TITLE") canvas.create_rectangle(0,0,400,300,fill="green",tag="ポーズ画面") canvas.create_text(200,150,text="ポーズ",fill="black",font=font1,tag="ポーズ") canvas.create_text(200,250,text="[b]でタイトルに戻る",fill="lime",font=font2,tag="ポーズ") scene = 2 if scene == 1: canvas.delete("TITLE") canvas.create_rectangle(0,0,400,300,fill="orange",tag="GAMEOVER") canvas.create_text(200,150,text="ゲームオーバー",fill="black",font=font1,tag="GAMEOVER") canvas.create_text(200,250,text="[b]でタイトルに戻る",fill="lime",font=font2,tag="GAMEOVER") if key == "space": canvas.delete("TITLE") canvas.create_text(200,150,text="タイトル",fill="black",font=font1,tag="TITLE") canvas.create_text(200,250,text="スペースキーで次の画面に",fill="lime",font=font2,tag="TITLE") canvas.create_text(230,280,text="[P]でポーズボタンに",fill="lime",font=font2,tag="TITLE") scene = 0 elif key == "p": canvas.delete("TITLE") canvas.create_rectangle(0,0,400,300,fill="green",tag="ポーズ画面") canvas.create_text(200,150,text="ポーズ",fill="black",font=font1,tag="ポーズ") canvas.create_text(200,250,text="[b]でタイトルに戻る",fill="lime",font=font2,tag="ポーズ") scene = 2 if scene == 2: canvas.delete("TITLE") canvas.create_rectangle(0,0,400,300,fill="green",tag="ポーズ画面") canvas.create_text(200,150,text="ポーズ",fill="black",font=font1,tag="ポーズ") canvas.create_text(200,250,text="[b]でタイトルに戻る",fill="lime",font=font2,tag="ポーズ") if key == "space": canvas.delete("TITLE") canvas.create_text(200,150,text="タイトル",fill="black",font=font1,tag="TITLE") canvas.create_text(200,250,text="スペースキーで次の画面に",fill="lime",font=font2,tag="TITLE") canvas.create_text(230,280,text="[P]でポーズボタンに",fill="lime",font=font2,tag="TITLE") scene = 0 elif key == "p": canvas.delete("TITLE") canvas.create_rectangle(0,0,400,300,fill="orange",tag="GAMEOVER") canvas.create_text(200,150,text="ゲームオーバー",fill="black",font=font1,tag="GAMEOVER") canvas.create_text(200,250,text="[b]でタイトルに戻る",fill="lime",font=font2,tag="GAMEOVER") scene = 1 if scene == 0: if key == "spase": canvas.delete("TITLE") scene = 1 if key == "p": canvas.delete("ポーズ画面") scene = 2 if scene == 1: canvas.delete("TITLE") if key == "b": canvas.delete("GAMEOVER") scene = 0 if key == "p": canvas.delete("ポーズ画面") scene = 2 if scene == 2: if key == "b": canvas.delete("GAMEOVER") scene = 0 if key == "spase": canvas.delete("TITLE") scene = 1 if scene == 0: canvas.delete("ポーズ") canvas.delete("GAMEOVER") if scene == 1: canvas.delete("TITLE") canvas.delete("ポーズ") if scene == 2: canvas.delete("TITLE") canvas.delete("GAMEOVER") if scene != 1 and scene != 2 and scene !=0: cavas.delete("TITLE") scene = 1 root.after(100, main) root = tkinter.Tk() root.title("シーン遷移") root.bind("<KeyPress>", key) canvas = tkinter.Canvas(width=400, height=300, bg="white") canvas.pack() main() root.mainloop()

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/11/16 01:02
2022/11/16 01:18
2022/11/16 04:07