假设我有这个示例代码:
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中做到这一点?
我无法创建一个窗口对象,然后复制它,因为在我的实际程序中,我使用的是全局变量,而这些全局变量只针对一个窗口。
似乎我唯一的选择是找到再次运行程序的方法。
答案 0 :(得分: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()