質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1172閲覧

spyderを使ってtkinterを使ったpythonのコードを動作させるとmacがシャットダウンする現象について

SenaK

総合スコア10

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2020/02/20 17:25

編集2020/04/09 02:58

ソースコード
http://souzousha.iinaa.net/www/SourcePY.html

こちらのサイトにある、「二次元波動シミュレーション」というプログラムをインストールし、spyderで動作させようとしたところ、macがシャットダウンしてしまう現象に見舞われています。
他のファイルでも同じような現象が起こっていますが、これは何が原因なのでしょうか?

pythonのプログラムを動作させた時にシャットダウンする現象について調べたのですが、teratail内での似たような質問に回答がついていなかったので新規に質問させて頂いています。

《追記》
Pythonは最新の状態にアップデートしてあります。
ターミナルで
$ python3
と打った後、
import tkinter
そして
tkinter._test()
と打つと、きちんとtkinterのウィンドウが表示されるのですが、いざspyderでコードをコンパイルしようとすると、macがシャットダウンしてしまいます。

ご教授よろしくお願いいたします。

以下がコードになります(サイト先でもインストール可能です)

python

1from tkinter import * 2import math,time 3#■初期設定 4NumX = 50; NumY = 50 5Z=[[0 for j in range(NumY + 1)] for i in range(NumX + 1)] 6ID=[[0 for j in range(NumY + 1)] for i in range(NumX + 1)] 7ZX=[[0 for j in range(NumY + 1)] for i in range(NumX + 1)] 8ZY=[[0 for j in range(NumY + 1)] for i in range(NumX + 1)] 9def initHidden(): 10 XY=[[0,0] for i in range(4)] 11 XY[0][0]=200;XY[0][1]=200; XY[1][0]=200;XY[1][1]=210 12 XY[2][0]=210;XY[2][1]=210; XY[3][0]=210;XY[3][1]=200 13 A=math.pi/9; B=math.pi/6; DX=5 14 cosA=DX*math.cos(A);cosB=DX*math.cos(B) 15 sinA=DX*math.sin(A);sinB=DX*math.sin(B) 16 for i in range(NumX+1): 17 for j in range(NumY+1): 18 ZX[i][j]=250+(i*cosA-j*cosB) 19 ZY[i][j]=250-(i*sinA+j*sinB) 20 for i in range(NumX): 21 for j in range(NumY): 22 ID[i][j]=canvas.create_polygon(XY,fill="white", outline="#000077") 23#■隠れ線処理 24def hiddenLine(): # 画面の場合のみ可能(プロッタでは使えない) 25 global canvas, NumX, NumY 26 XY=[0 for i in range(8)] 27 for i in range(NumX): 28 i2=NumX-i;i1=i2-1 29 for j in range(NumY): 30 j2=NumX-j; j1=j2-1 31 XY[0]=ZX[i1][j1]; XY[1]=ZY[i1][j1]-Z[i1][j1] 32 XY[2]=ZX[i1][j2]; XY[3]=ZY[i1][j2]-Z[i1][j2] 33 XY[4]=ZX[i2][j2]; XY[5]=ZY[i2][j2]-Z[i2][j2] 34 XY[6]=ZX[i2][j1]; XY[7]=ZY[i2][j1]-Z[i2][j1] 35 canvas.coords(ID[i][j],XY) 36ZS=[[[0 for j in range(NumY+1)] for i in range(NumX+1)] for k in range(2)] 37V =[[[0 for j in range(NumY+1)] for i in range(NumX+1)] for k in range(2)] 38simTime = 0; ID1 = 0; ID2 = 1; Myu=0.02;counter=0 39FreeBoundary=True # 境界条件を自由端にするときTrueにする 40captMode=True #画面キャプチャするときTrueにする 41def setData(): #データを設定 42 for j in range(NumX+1): 43 for k in range(NumY+1): 44 Z[j][k]=80.0*ZS[ID1][j][k] 45def initWave(): 46 global simTime, ID1, ID2, Myu,counter,XS,V 47 simTime = 0; ID1 = 0; ID2 = 1; Myu=0.02;counter=0 48 for i in range(NumX+1): 49 for j in range(NumY+1): 50 DX = i - NumX/2; DY = j - NumY/2 51 R = math.sqrt(DX * DX + DY * DY) 52 if R < 0.1: A=1 53 elif R > 3 : A=0 54 else : A = math.sin(R) / R; 55 ZS[0][ i][ j] = -A; V[0][ i][ j] = 0; 56def waveEquation(SaveN, Alfa, DX, DT): 57 global NumX, NumY, ZS, ID1,ID2,simTime,Myu,counter 58 Beta = Alfa * Alfa / (DX * DX); 59 for k in range(SaveN): 60 for i in range(1, NumX): 61 for j in range(1, NumY): 62 ZS[ID2][i][j] = ZS[ID1][i][j] + DT * V[ID1][i][j] 63 for i in range(1, NumX): 64 for j in range(1, NumY): 65 Acc = Beta * (ZS[ID2][i][j + 1] - 2 * ZS[ID2][i][j] + 66 ZS[ID2][i][j - 1] + ZS[ID2][i + 1][j] - 67 2 * ZS[ID2][i][j] + ZS[ID2][i - 1][j]) 68 V[ID2][i][j] = V[ID1][i][j] + DT *(Acc- Myu*V[ID1][i][j]) 69 if FreeBoundary: #自由端境界条件 70 for i in range(NumX+1): 71 V [ID2][i][0] = V [ID2][i][1] 72 V [ID2][i][NumY] = V [ID2][i][NumY-1] 73 ZS[ID2][i][0] = ZS[ID2][i][1] 74 ZS[ID2][i][NumY] = ZS[ID2][i][NumY-1] 75 for i in range(NumY+1): 76 V [ID2][0][i] = V [ID2][1][i] 77 V [ID2][NumX][i] = V [ID2][NumX-1][i] 78 ZS[ID2][0][i] = ZS[ID2][1][i] 79 ZS[ID2][NumX][i] = ZS[ID2][NumX-1][i] 80 else: #固定端境界条件 81 for i in range(NumX+1): 82 V[ID2][i][0] =0; V[ID2][i][NumY]= 0 83 ZS[ID2][i][0]=0; ZS[ID2][i][NumY]=0 84 for i in range(NumY+1): 85 V[ID2][0][i] =0; V[ID2][NumX][i]=0 86 ZS[ID2][0][i]=0; ZS[ID2][NumX][i] = 0 87 simTime += DT; ID1 = ID2; ID2 = 1-ID2;counter+=1 88 return 0 89def leftMouseDown(event):#ダウン 90 waveEquation(100, 0.05, 0.05, 0.01) 91 setData(); hiddenLine(); 92 root.title("2次元波動 t = %f" % simTime);root.update() 93#■メイン処理 94root=Tk();root.title("2次元波動");root.geometry("500x300") 95canvas=Canvas(root,width=500,height=300,bg="white"); canvas.pack() 96initHidden(); initWave() 97if captMode: 98 waveEquation(100, 0.05, 0.05, 0.01) 99 setData(); hiddenLine(); 100 root.title("2次元波動 t=%f" % simTime);root.update() 101 canvas.bind("<Button-1>",leftMouseDown) 102 root.mainloop() 103else: 104 while(1): 105 waveEquation(100, 0.05, 0.05, 0.01) 106 setData(); hiddenLine() 107 root.title("2次元波動 t = %f" % simTime);root.update() 108 time.sleep(0.01)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問