2017-01-08 15 views
-1

Python 3にGUIプログラムがあり、起動オプションがいくつか入っていますfile.txtです。そのうちの一つは次のとおりです。Python 3 - コンソールの表示を非アクティブ化する

Console (Yes/No) = ... 

事は、私が「はい」または「いいえ」がある場合は、コンソールを表示するかどうかをしたいです。

私はそうする方法を見つけた:script1.pyw

script2.py(w)

import os 

def getParam(): 
    param = open("file.txt","r").read() 
    param.split(" = ")[1] # getting the value of "Console = " 

    return(param) 

param = getParam() 

if "script2.py" in listdir(): 

    if param == "No": 
     os.rename("script2.py","script2.pyw") 
     os.system("python script2.pyw") 

    elif param == "Yes": 
     os.system("python script2.py") 

if "script2.py" in listdir(): 

    if param == "Yes": 
     os.rename("script2.pyw","script2.py") 
     os.system("python script2.py") 

    elif param == "No": 
     os.system("python script2.pyw") 

from tkinter import * 

window = tk.Tk() 

... 

window.mainloop() 

私は、Linux上で動作し、私は共有したいと幸いそれはしかし作品Windowsでの人と私のプログラム私は問題に遭遇しました。彼らがscript1.pywを起動すると、すべてがうまくいくが、それはfile.txtに入れても、 Pythonのシェルが開いています(そして、私が望むものとは絶対にありません...)

誰かが考えていますか?

+0

FYIあなたが設定するための独自のフォーマットを思い付くする必要はありません。https://docs.python.org/2/library/configparser.html Windowsコンソールが表示されることなく、[ファイル名を指定して実行Pythonスクリプトの – jonrsharpe

+0

可能な複製](http://stackoverflow.com/questions/1689015/run-python-script-without-windows-console-appearing) – jonrsharpe

答えて

0

あなたは多分このような何か、黒い画面をスキップするためにsubprocess.callos.system呼び出しを変更する必要があります。

subprocess.call(['py', '3.4', '-c', "import time; time.sleep(1)"], shell=True) 

シェル= Trueの一部であります何あなたがWindows上pythow.exeを呼び出す必要があります...

0

を示すからコンソールを保持します:

pythonw script2.pyw 

os.sytemを使用しないでください。それはsubprocessを使用することをお勧めです:

import sys 

if sys.platform == 'win32': 
    subprocess.call(['pythonw', 'script2.pyw'], shell=True) 

os.sytem docssubprocessをお勧めします。

subprocessモジュールは、新しいプロセスを生成し、その結果を取得するためのより強力な機能を提供します。このモジュールを使用する方がこの機能を使用する方が望ましいです。

+1

'shell = True'を使うのは避けるのが最善です。この場合、pythonw.exeはコンソールアプリケーションではないので、完全に不要です。しかし、ターゲットがpython.exeのようなコンソールアプリケーションであっても、単に隠されたコンソールを取得するために 'shell = True'を使うのは一般的には悪い考えです。より良いオプションは 'startupinfo'を自分自身に設定してコンソールウィンドウを隠すか、' CREATE_NO_WINDOW'か 'DETACHED_PROCESS'の' creationflags'値を使うことです。例については、[この回答](http://stackoverflow.com/a/7006424/205580)を参照してください。 – eryksun

関連する問題