pythonで作ったexeファイルが、初回実行時のみ自動的に再起動されます。
はじめにウインドウがでて、数秒間たつと自動的にウインドウが消え、再び立ち上がります。
二回目以降は一回ウインドウが立ち上がると、再び自動で消えることはありません。
pythonがインストールされているパソコンで起こっているみたいです
以下アドベンチャーゲームのメインプログラムです
python3.6
1 2#!/usr/bin/env python3 3# -*- coding: utf-8 -*- 4 5 6import tkinter 7import save_and_load2 8import pickle 9import pygame 10from pygame.locals import * 11import sys 12import time 13import copy 14import os.path 15pygame.init() 16 17 18 19#解読 20def decode_line(event): 21 global current_line, bgimg, lcharming, ccharming,rcharming,lc,cc,rc 22 if current_line >= len(scenario): 23 return 24 25 #1行目読み込み 26 line = scenario[current_line] 27 current_line += 1 28 line = line.replace("\n", "\n").strip() 29 params = line.split(" ") 30 #分岐 31 if line[0] != "#": 32 message["text"]=line 33 csavedata[0] = current_line 34 return 35 elif params[0] == "#back": 36 canvas.delete("all") 37 bgimg = tkinter.PhotoImage(file=params[1]) 38 canvas.create_image(450, 230, image=bgimg) 39 csavedata[4] = params[1] 40 elif params[0] == "#putChar": 41 if params[2] == "L": 42 canvas.delete("left") 43 lcharming=tkinter.PhotoImage(file=params[1]) 44 canvas.create_image(200,160,image=lcharming,tag="left") 45 csavedata[1] = params[1] 46 elif params[2] == "R": 47 canvas.delete("right") 48 rcharming=tkinter.PhotoImage(file=params[1]) 49 canvas.create_image(700,160,image=rcharming,tag="right") 50 csavedata[2] = params[1] 51 else: 52 canvas.delete("center") 53 ccharming=tkinter.PhotoImage(file=params[1]) 54 canvas.create_image(450,160,image=ccharming,tag="center") 55 csavedata[3] = params[1] 56 elif params[0] == "#delChar": 57 if params[1] == "L": 58 canvas.delete("left") 59 csavedata[1] = None 60 elif params[1] == "R": 61 canvas.delete("right") 62 csavedata[2] = None 63 else: 64 canvas.delete("center") 65 csavedata[3] = None 66 elif params[0] == "#branch": 67 message.unbind("<Button-1>") 68 btn = tkinter.Button(text=params[2], width=20) 69 branch.append(btn) 70 btn["command"]= lambda : jump_to_line(int(params[1])-1) 71 #lambdaをいれないと引数を指定できない コマンドを受ける関数は引数なしでないといけない。 72 btn.place(x=300,y=60+int(params[1])*60) 73 jumplabel.append(params[3]) 74 if params[4] == "n": 75 return 76 elif params[0] == "#jump": 77 label = params[1].strip() 78 #ジャンプ先を探す 79 for l in range(len(scenario)): 80 if scenario[l].strip() == "## " + label: 81 current_line = l 82 decode_line(None) 83 return 84 elif params[0] == "#end": 85 message["text"] = "終わり" 86 message.unbind("<Button-1>") 87 pygame.mixer.music.stop() 88 current_line = 999999999 89 #再帰呼び出し 90 decode_line(None) 91 92#ジャンプ関数 93def jump_to_line(branchID): 94 global current_line 95 label = jumplabel[branchID] 96 #ボタンむしり 97 for btn in branch: 98 btn.place_forget() #なくしても動いた 99 btn.destroy() 100 branch.clear() 101 jumplabel.clear() 102 message.bind("<Button-1>", decode_line) 103 #ジャンプ先を探す 104 for l in range(len(scenario)): 105 if scenario[l].strip() == "## " + label: 106 current_line = l 107 decode_line(None) 108 return 109 110#ウィンドウ作成 111root = tkinter.Tk() 112root.title("よろしくアドベンチャー") 113root.minsize(900,460) 114root.option_add("*font", ["新コミック体", 14]) 115#キャンパス作成 116canvas = tkinter.Canvas(width=900, height=460) 117canvas.place(x=0, y=0) 118#メッセージエリア 119message = tkinter.Label(root,width=83, height=7, wraplength=840, bg="white smoke", 120 justify="left", anchor="nw") 121message.place(x=28, y=284) 122message["text"] = "クリックしてスタート" 123 124#BGM 125# pygame.mixer.music.load("bgm\Ro-Crazy.wav") 126# pygame.mixer.music.play(-1) 127 128#ファイル読み込み 129scenario = [] 130file = open("img8\scenario.txt","r",encoding="utf-8") 131while True: 132 line = file.readline() 133 scenario.append(line) 134 if not line: 135 file.close() 136 break 137 138#現在の行数 139current_line = 0 140#イベント設定 141message.bind("<Button-1>", decode_line) 142 143if os.path.isfile(".\savedatas.binary") == False: 144 savedata = ["","","",""] 145 file = open("savedatas.binary","wb") 146 pickle.dump(savedata,file) 147 file.close 148else: 149 pass 150file = open("savedatas.binary","rb") 151savedata = pickle.load(file) 152file.close 153csavedata=[0,None,None,None,None] 154 155 156#LOAD 157def doload(i): 158 global current_line,bgimg,lcharming,rcharming,ccharming 159 file = open("savedatas.binary","rb") 160 savedata = pickle.load(file) 161 file.close 162 if savedata[i][0] =="": 163 pass 164 else: 165 current_line = savedata[i][0]-1 166 canvas.delete("all") 167 bgimg = tkinter.PhotoImage(file=savedata[i][4]) 168 canvas.create_image(450, 230, image=bgimg) 169 canvas.delete("left") 170 canvas.delete("right") 171 canvas.delete("center") 172 if savedata[i][1] != None: 173 lcharming = tkinter.PhotoImage(file=savedata[i][1]) 174 canvas.create_image(200,160,image=lcharming,tag="left") 175 if savedata[i][2] != None: 176 rcharming = tkinter.PhotoImage(file=savedata[i][2]) 177 canvas.create_image(700,160,image=rcharming,tag="right") 178 if savedata[i][3] != None: 179 ccharming = tkinter.PhotoImage(file=savedata[i][3]) 180 canvas.create_image(450,160,image=ccharming,tag="center") 181 decode_line(None) 182 183 184 185#saveload 186dosave = save_and_load2.Save() 187Savebtn = tkinter.Button(canvas,text="SAVE") 188Savebtn.place(x=760, y=420) 189Savebtn["command"] = lambda : dosave.saving(current_line,lcharming,ccharming,rcharming,bgimg,scenario,savedata,csavedata) 190 191#画像 192bgimg=None 193lcharming=None 194ccharming=None 195rcharming=None 196 197Loadbtn = tkinter.Button(canvas,text="LOAD") 198Loadbtn.place(x=830, y=420) 199Loadbtn["command"] = lambda : dosave.loading(savedata,doload) 200 201#選択肢 202branch = [] 203jumplabel = [] 204 205root.mainloop()
>pythonで作ったexeファイル exeファイルを作成時に使用したライブラリ名とコマンドオプション指定を質問文に追記してくださいな。 憶測では、exe化した時のオプション指定で「コンソールを表示しないようにする」を指定していない気がしますが。。。
exeファイルはpyInstallerで作りました。そのときは、 pyinstaller -F filename.py です
pyinstaller --noconsole -F filename.py としてみてくださいな。あとsave_and_load2がないため、質問文のコードは実行できませんでした!
--noconsoleをいれたらなおったみたいです。ありがとうございます
解決おめでとうございます。回答欄に自己解決内容を記載して質問をクローズしてくださいな。
了解です
回答1件
あなたの回答
tips
プレビュー