前提・実現したいこと
課題で、pythonを使ったシューティングゲームの制作をしています。
現在ビューにあたるクラス内にTkinterのCanvasウィジェットを配置しようとしています。ゲームの完成形は大体このような感じです。
(敵の発生はランダムです。自機は、敵テーブルを回転させ敵を打ちます。上に長いタイトルがあります。)
予めビューの実装用のクラスが概念クラス合わせて4つ用意されておりそれを必ず使う必要があります。
まず、プレイ画面(左の自機や敵がある所)を表すCanvasを展開したいと思っています。
発生している問題・エラーメッセージ
上図右の得点バーと左のプレイ画面用(基盤になる7*7の四角)に二つCanvasをそれぞれ定義する必要があるのですが、得点バーを定義するとプレイ画面用のキャンバスが消えてしまいます。 得点バーを定義しなければ正常に表示されます。 <エラー> 無し
該当のソースコード
python
1root = tk.Tk() 2root.title(TITLE) 3sb = tk.Canvas(root, width = 600, height = 900, bg = "red") 4sb.pack(anchor = tk.SE) 5sb.create_text((300,40), text = "得点", font = ("Arial",25), fill = "white") 6sb.create_text((160,100), text = "収集:", font = ("Arial", 20), fill = "white") 7sb.create_text((440,100), text = 0, font = ("Arial", 20), fill = "white") 8sb.create_text((160,200), text = "破壊:", font = ("Arial", 20), fill = "white") 9sb.create_text((440,200), text = 0, font = ("Arial", 20), fill = "white") 10hv = tk.Canvas(root, width = 100, height = 100, bg = "grey") 11hv.pack(anchor = tk.SW) 12hv.create_text((100,10), text = "自", font = ("Arial", 10)) 13root.mainloop() 14 15(本来score_barとhackerviewはそれぞれ専用のクラス内に定義しなければならないが、質問用に抜き出し。問題はそのまま。)
試したこと
hv.pack(side = tk.BOTTOM)としたりwidth、heightを大きくして見落とさないようにする、bgを目立つ色にしてみる等行いましたが、いずれもsbが無い時のみ反映されsbを加えるとCanvas自体が消えました。
補足情報(FW/ツールのバージョンなど)
開発環境: IDLE python3.9 64-bit
pythonのバージョンも3.9
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。