前提・実現したいこと
tkinterで動くボタンを押すゲームを作りたい
発生している問題・エラーメッセージ
Traceback (most recent call last): File "C:\Users", line 47, in <module> th_1.start() AttributeError: 'NoneType' object has no attribute 'start'
該当のソースコード
python
1from tkinter import ttk 2import tkinter 3import threading 4import random 5 6class Move(threading.Thread): 7 def __init__(self,text,flag_x=True,flag_y=True,x=random.randint(0,400),y=random.randint(0,300)): 8 self.flag_x,self.flag_y = flag_x,flag_y 9 self.x,self.y = x,y 10 self.text = text 11 self.button = tkinter.Button(master=root,text=text,foreground="red",command=self.button_press) 12 # ボタンを押したときの処理 13 def button_press(self): 14 self.button.pack_forget() 15 lb = tkinter.Label(master=root,text=self.text,font=("MS ゴシック",50),fg="blue",bg="red") 16 lb.place(x=100,y=100) 17 # 実行 18 def run(self): 19 # 画面外に出ないように調節 20 if(self.flag_y==True): 21 self.y-=1 22 else: 23 self.y+=1 24 if(self.y==0): 25 self.flag_y=False 26 elif(self.y+self.button.winfo_reqheight()==300): 27 self.flag_y=True 28 29 if(self.flag_x==True): 30 self.x-=1 31 else: 32 self.x+=1 33 if(self.x==0): 34 self.flag_x=False 35 elif(self.x+self.button.winfo_reqwidth()==400): 36 self.flag_x=True 37 # ボタンをコンマ4秒ごとに配置 38 self.button.place(x=self.x,y=self.y) 39 self.button.after(4,lambda: self.run()) 40 41# ウィンドウの情報 42w,h="400","300" 43root=tkinter.Tk() 44ttk.Style().configure("TP.TFrame", background="snow") 45f=ttk.Frame(master=root,style="TP.TFrame",width=w,height=h) 46f.pack() 47# TODO/動くボタンをいくつか作成 48if __name__ == "__main__": 49 th_1 = Move("a").run(); 50 th_2 = Move("b").run(); 51 th_1.start() 52 th_2.start() 53root.mainloop() 54
試したこと
threadについてインターネットで学んだ。
補足情報(FW/ツールのバージョンなど)
python3のIDLEです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/27 11:12