3

このサンプルコードがあるとしましょう:

import wx

app = wx.App(False)  # Create a new app, don't redirect stdout/stderr to a window.
frame = wx.Frame(None, wx.ID_ANY, "Hello World") # A Frame is a top-level window.
s=wx.Button(frame,-1,"New")
frame.Show(True)     # Show the frame.
app.MainLoop()

一部のプログラムと同様に、[新規] ボタンを押すと、プログラムが別のウィンドウで再び開きます。どうすればPythonでこれを行うことができますか?

実際のプログラムではグローバル変数を使用しており、これらのグローバル変数は1つのウィンドウに対してのみ作成されるため、ウィンドウオブジェクトを作成してからコピーを作成することはできません。

私の唯一の選択肢は、プログラムを再度実行する方法を見つけることです。

4

1 に答える 1

5

あなたはこのようなことを試すことができます

import subprocess
import sys
new_process = subprocess.Popen([sys.executable]+sys.argv)

最初に実行された引数で python を再度実行します。または、元の例を変更して、ボタンを押すとスクリプトが再度実行されるようにします:-

import wx
import subprocess
import sys

def re_run(e):
    new_process = subprocess.Popen([sys.executable]+sys.argv)

app = wx.App(False)  # Create a new app, don't redirect stdout/stderr to a window.
frame = wx.Frame(None, wx.ID_ANY, "Hello World") # A Frame is a top-level window.
s=wx.Button(frame,-1,"New")
s.Bind(wx.EVT_BUTTON, re_run)
frame.Show(True)     # Show the frame.
app.MainLoop()
于 2012-05-27T16:53:26.780 に答える