前提・実現したいこと
Python勉強中の初心者です。
麻雀初心者支援ツールを作りたいと思い、アプリケーションの作成を行っているのですがcanvasに画像が表示されない等様々な問題にぶつかって困っています。
発生している問題・エラーメッセージ
直面している問題は
①辞書を作成し各要素にその画像を入れたいが入れ方がわからない(例えば一筒を呼び出したら一筒の牌の画像が値として返ってくる)
②試しにcanvas上に画像を表示させようとしたが、画像が表示されない
③「次へ」ボタンを押したら同じウィンドウ内で画面が切り替わるようにしたいが方法がわからないので仕方なく元のウィンドウを閉じて新しいウィンドウを作る手法を取っている。しかしなぜが元のウィンドウが閉じず、新しいウィンドウが開かない
の3つです。
初心者質問で恐縮ですがどうかよろしくお願いします。
該当のソースコード
Python
1import cv2 2from PIL import Image,ImageTk 3import tkinter as tk 4 5pai_man = {"man1":man1.png,"man2":2,"man3":3,"man4":4,"man5":5,"man6":6,"man7":7,"man8":8,"man9":9} 6pai_pin = {"pin1":1,"pin2":2,"pin3":3,"pin4":4,"pin5":5,"pin6":6,"pin7":7,"pin8":8,"pin9":9} 7pai_sou = {"sou1":1,"sou2":2,"sou3":3,"sou4":4,"sou5":5,"sou6":6,"sou7":7,"sou8":8,"sou9":9} 8pai_jihai = {"ji1":"東","ji2":"南","ji3":"西","ji4":"北","ji5":"白","ji6":"發","ji7":"中"} 9pai_images = {**pai_man,**pai_pin,**pai_sou,**pai_jihai} 10 11global img 12img = Image.open(pai_images[man1]) 13 14def btn1_click(): 15 root.destroy() 16 root_intro = tk.Tk() 17 root_intro.geometry('1200x700') 18 root_intro.title('ルールを知らない人向け(入門編)') 19 root_intro.label = tk.Label(root_intro,font=('MSゴシック','20','bold'), text='このステップは麻雀のルールを全く知らない人向けです\nまずは麻雀の基本から学んでいきましょう') 20 root_intro.label.place(x=250,y=200) 21 btn3 = tk.Button(root_intro, text='次へ',width=8, command=btn3_click) 22 btn3.pack(side=tk.RIGHT) 23 root_intro.mainloop() 24 25def btn2_click(): 26 root.destroy() 27 root_beginner = tk.Tk() 28 root_beginner.geometry('1200x700') 29 root_beginner.title('ルールを覚えた人向け(初級者編)') 30 root_beginner.mainloop() 31 32def btn3_click(): 33 root_intro.destroy() 34 root_pai_images = tk.Tk() 35 root_pai_images.geometry('1200x700') 36 root_pai_images.title('ルールを知らない人向け(入門編') 37 root_pai_images.label = tk.Label(root_pai_images,font=('MSゴシック','20','bold'), text='まず麻雀に使用する道具に「牌(ぱい、はい)」と呼ばれるものがあります\nこれは27種の数牌(すうはい、かずはい)と7種の字牌(じはい)から成り、\n1種類につき4個存在するので計34種136個の牌を用いてゲームを行います。') 38 root_pai_images.label.place(x=100,y=200) 39 canvas = tk.Canvas(root_pai_images,bg="green",width=1200, height=400) 40 canvas.place(x=0,y=350) 41 canvas.create_image(10,500,image=img) 42 root_pai_images.mainloop() 43 44root = tk.Tk() 45root.geometry('1200x700') #*ではなく小文字のxで記述 46root.title('麻雀初心者支援ツール') 47btn1 = tk.Button(root, width=80,height=10,font=('MSゴシック','15','bold'),text = 'ルールがわからない人向け',anchor=tk.CENTER,command=btn1_click) 48btn1.pack(fill = 'x', padx=100) 49btn2 = tk.Button(root, width=80,height=10,font=('MSゴシック','15','bold'),text='ルールを覚えた人向け',anchor=tk.CENTER,command=btn2_click) 50btn2.pack(fill='x', padx=100) 51 52root.mainloop()
試したこと
①辞書の"man1"の値に萬子の1の画像の名前などを入れてみましたが
'man1' is not defined
とエラーメッセージが表示されたのでおそらく入れられてないと思います。
②こちらも
canvas.create_image(10,500,image=img)
の右辺の部分に画像の名前を入れてみましたがうまくいきませんでした。
global変数でimgを宣言してみましたがうまくいきませんでした。
③btn1で1度「ウィンドウを閉じて新しいウィンドウを開く」という処理を行う際はうまくいったのですが、btn3で同じコードで実行するとエラーが発生してしまいました。
補足情報(FW/ツールのバージョンなど)
表示したい画像はworkspaceの該当のソースコードと同じフォルダーに入っています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/29 14:36
2021/10/29 15:20