【问题标题】:Opening 2nd window before closing 1st window in pygtk在 pygtk 中关闭第一个窗口之前打开第二个窗口
【发布时间】:2023-03-31 02:37:02
【问题描述】:

在我的 pygtk 应用程序中,我想在打开下一个窗口后关闭当前窗口。

这是我写的代码

#!/usr/bin/env python

# example base.py

import pygtk
pygtk.require('2.0')
import gtk
import subprocess

class Base:
    def next(self,widget):
        subprocess.call('fabfile.py', shell=True)
        self.window.destroy()

    def __init__(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.set_size_request(200,200)
        self.button = gtk.Button("Next")
        self.button.show()
        self.button.connect("clicked", self.next)
        self.window.add(self.button)
        self.window.show()

    def main(self):
        gtk.main()

print __name__
if __name__ == "__main__":
    base = Base()
    base.main()

当我点击下一个按钮时,它会打开下一个窗口,但它不会在后台关闭我当前的窗口,并且当前窗口会在打开下一个窗口后挂在后台。

def next(self,widget):
   subprocess.call("fabfile.py", shell=True)
   self.win.destroy()

当我在

中运行这段代码时

window machine 它没有关闭现有窗口并且

Linux machine 它给出了这个错误。

/bin/sh: fabfile.py: command not found

谁能告诉我如何解决这个问题。谢谢...

【问题讨论】:

  • 在 linux 上:subprocess.call('fabfile.py', shell=True) 应该是 subprocess.call('.\fabfile.py', shell=True)。这与搜索脚本时不包含当前工作目录有关。
  • 我已经尝试过你的建议,但它给出了同样的错误。你有任何其他的解决办法。
  • @cstrutton: '\f' 是单个字符(ASCII Formfeed)。您需要转义反斜杠,例如,使用原始字符串文字 r'\f'(两个字符)。无论如何,您可能指的是'./local_command'(如果您不在Windows上)。而且通常fabfile.py 不是直接调用而是使用fab 命令。 subprocess.Popen('fab') 无需等待完成即可启动 fab 命令。

标签: python python-2.7 subprocess pygtk


【解决方案1】:

试试这个,我希望它会起作用,但我不确定,

import subprocess
subprocess.Popen(["fabfile.py"], bufsize=2048, shell=True,stdin=subprocess.PIPE, stdout=subprocess.PIPE)
self.win.destroy()

subprocess.Popen 将打开您的第二个窗口并在当前窗口之后关闭。

【讨论】:

  • 感谢它没有挂起,但有一段时间它正在关闭而无需等待打开。有任何属性wait 可以打开。
  • 逻辑上你可以做到。在新窗口打开时创建任何全局变量,将全局变量的值更改为 1 并在关闭窗口之前读取文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多