2

プログラムの追加インスタンスを起動するために使用する行がプログラムにあります。

a=subprocess.Popen(__file__)

Linuxでは問題なく動作します。

しかし、osxでは、本来のように新しいウィンドウを作成しません(プログラムはTkinterプログラムです)が、エラーはまったく発生しません。(そして、_ file _が実際に実行中のプログラムの正しい名前であり、実行可能であることを確認しました)

戻り値は次のとおりです。

>    pprint (vars(a))
{'_child_created': True,
 'pid': 38865,
 'returncode': None,
 'stderr': None,
 'stdin': None,
 'stdout': None,
 'universal_newlines': False}

ヒントはありますか?

4

1 に答える 1

0

そこに厄介な問題があります。あのね ?あなたのウィンドウは、以前に作成した別のウィンドウの後ろに隠れているだけです。

それを確認するには、次のように、最後に作成されたウィンドウが最初のウィンドウの前に表示されるようにします。

import Tkinter
import subprocess

if __name__ == "__main__":
    try:
        open('bluh_check')
    except IOError:
        open('bluh_check', 'w').close()
        x = subprocess.Popen(['python', __file__])
        print vars(x)
        title = 'there'
    else:
        title = 'hi'

    root = Tkinter.Tk()
    root.title(title)
    root.withdraw()
    root.deiconify()
    root.mainloop()
于 2013-01-21T00:39:03.220 に答える