python Tkinter 相手が選択した番号に対応する画像を自分のボードに表示したい。

python

1import tkinter as tk 2import socket as sk 3import threading 4import sys 5from PIL import Image, ImageTk 6 7 8class TkWin :9 def __init__(self, nm : str, c : Configure, b : Board) :10 self.root = tk.Tk()11 rt = self.root 12 self.cf = c 13 self.bd = b 14 15 #~~省略~~16 17 #動物イラスト貼り付け18 self.images = {} #写真の辞書19 self.char = [int(1), int(2), int(3), int(4)] # キャラ番号のリスト 1:とら 2:うさぎ 3:コアラ 4:いぬ20 self.selected_char = []21 self.image_ids = []22 self.img_sel_id = None23 self.selected_image = None24 25 x = w-3026 y = h/2 + 6027 28 for i ,image_path in enumerate(image_paths):29 image = Image.open(image_path)30 resized_image = image.resize((100, 100))31 photo = ImageTk.PhotoImage(resized_image)32 self.images[i] = photo # 画像を辞書に追加33 p_image=self.canvas.create_image(x, y, image=self.images[i], anchor=tk.NW)34 self.image_ids.append(p_image) 35 x += 10036 print("self.image[", i,"] は",self.images[i])37 38 self.c_select_lab = tk.Label(text = "好きなキャラを選んでね!", font = ("ヒラギノ丸ゴ ProN", 20), foreground = "white", background = "black")39 self.c_select_lab.place(x = w-30, y = h/2, anchor=tk.NW)40 41 self.x, self.y = w-30, h/2 #記録用42 43 def ConfigureSocket(self) :44 self.SC = int(input("接続を待ちますか? 1:Yes 0:No => "))45 host = input("サーバのIPアドレス => ")46 self.name = str(input("名前はどうしますか?"))47 char = int(input("キャラはどうしますか? 1:トラ 2:うさぎ 3:コアラ 4:いぬ=>"))48 49 if char in self.char :50 self.selected_char = char 51 selected_index = self.char.index(char) #インデックスを取得52 for i in self.image_ids:53 if i != self.image_ids[selected_index]:54 self.canvas.delete(i) 55 else: 56 print("その番号は選べません")57 58 if self.SC==1 :59 self.sca = Server(host, self.port)60 elif self.SC==0 :61 self.sca = Client(host, self.port)62 else :63 sys.exit(1)64 65 # 受信スレッド開始66 print("受信スレッド起動")67 self.th = threading.Thread(target=self.recvth, daemon=True)68 self.state = 169 self.bd.bStart = True70 self.th.start()71 msg = "PROFILE:" + self.name + ":" + str(selected_index)72 self.sca.send(msg) #相手にメッセージ送信73 74def recvth(self) :75 print("受信開始")76 ostr = self.sca.recv()77 print(ostr)78 #ostr = ostr.replace("\n", "")79 #ostr = ostr.strip() #後から追加した80 print("[RECV]", ostr)81 82 print("Received Message:", ostr)83 84 m = ostr.split(":")85 n = len(m)86 87 while ostr!= "end." :88 elif n == 3 and m[0] == "PROFILE" :89 name = m[1]90 char_index = int(m[2])91 print("Received char_index:", char_index) #確認92 print("self.images[char_index]:", self.images[char_index]) #確認93 o_image=self.canvas.create_image(x=self.x+150, y=self.y+100, image=self.images[char_index], anchor=tk.NW) #エラーが出ている箇所94 95 print("m[2]は", m[2])96 selected_image_id = int(m[2])97 name_label = tk.Label(text=m[1], font=("ヒラギノ丸ゴ ProN", 15), foreground="white", background="black")98 name_label.place(x=self.x+150, y=self.y) 99 100 print("相手の名前は", m[1], "さんです" )101 ostr = self.sca.recv()102 print("[RECV]", ostr)103 m =ostr.split(":")104 n =len(m)105 106image_paths = [107 "animal_mark09_tora.png",108 "animal_mark10_usagi.png",109 "animal_mark15_koala.png",110 "animal_mark03_inu.png",111] # 画像ファイルのパス112 113cf = Configure("config.txt") 114bd = Board(11,11)115tkw = TkWin("ゲーム", cf, bd)116tkw.ConfigureSocket()117tkw.root.mainloop()118tkw.sca.end()119print("終了")

コメントを投稿

0 コメント