我正在用 Python 编写一个简单的程序,它可以启动我当天需要的程序,并在我喝咖啡时根据需要放置它们。下面是启动和定位 Chrome 的函数示例。
def chrome():
Popen(['google-chrome'], stdout=os.open(os.devnull, os.O_RDWR), stderr=STDOUT)
time.sleep(5)
call(["/usr/bin/wmctrl", "-r", "Chrome", "-e", "0,1356,0,1200,1055"])
当我登录时,Chrome 无法打开。但是,当我运行 $ python boot.py
时,它会打开 Chrome,等待 5 秒,然后使用 wmctrl 定位窗口以及其他未打开的应用程序。
我有通过设置 python/home/rony/Documents/python/boot.py
在启动应用程序中启动的程序,我知道它正在执行,因为 Skype 启动了。启动 Skype 应用程序和 Chrome 之间的唯一区别是我使用 call('skype')
而不是 Popen()
。
Popen()
似乎没有在登录时打开我的应用程序的原因是什么?
最佳答案
我提到我使用了 call('skype')
而不是 Popen()
。这是因为我可以调用 Skype,并且实例不会像 Chrome 和 Thunderbird 那样绑定(bind)到终端。由于某种原因在启动时,每当执行 call()
的实例时,它都会阻止程序的其余部分执行。每当我从终端运行程序时都不会发生这种情况。
我认为问题是 Popen()
没有运行,但结果是 call()
不允许。将 call('skype')
更改为 Popen('skype')
已解决我的问题。
关于python - 启动程序不会启动应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20069565/