【问题标题】:Running Python Script Again再次运行 Python 脚本
【发布时间】:2012-05-27 16:40:46
【问题描述】:

假设我有这个示例代码:

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 中做到这一点?

我不能创建一个窗口对象然后复制它,因为在我的实际程序中我使用全局变量,而这些全局变量只用于一个窗口。

看来我唯一的选择是找到再次运行该程序的方法。

【问题讨论】:

    标签: python wxpython


    【解决方案1】:

    你可以试试这样的

    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()
    

    【讨论】:

    • 实际上,当我尝试您的示例时,单击按钮时似乎没有任何反应。
    • 嗯,我在 Vista 上运行,我看不到任何事情发生。
    • 我得到了它的工作,不是一个大问题。另外,如果我使用 py2exe 将我的程序转换为 .exe,这种方法是否仍然有效?
    • Py2exe:它可能会 - 你必须尝试一下!
    • 啊这是一台非常奇怪的计算机,我尝试使用 py2exe 但它最终导致计算机崩溃,但它可能会崩溃(我猜)
    猜你喜欢
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多