我的窗户上有个按钮。如果我点击它,我想启动VLC并流化一个URL。

def startstream():
    args = ['C:/Program Files/VideoLAN/VLC/vlc.exe', 'http://dreambox:8001/1:0:19:7B:B:85:C00000:0:0:0:']
    subprocess.call(args)

# Buttons
button_tnt = Button(fenster, text = "TNT Serie HD", command = startstream)

这是我想要的。
下面的一个不是我想要的那样工作,我不知道为什么不。
def startstream(url):
    args = ['C:/Program Files/VideoLAN/VLC/vlc.exe', url]
    subprocess.call(args)

# Buttons
button_tnt = Button(fenster, text = "TNT Serie HD", command = startstream('http://dreambox:8001/1:0:19:7B:B:85:C00000:0:0:0:'))

有了第一个代码,窗口就出现了,什么也没有发生。如果我点击按钮,流就开始了,完美。
第二个代码:我运行脚本,流立即开始。关闭VLC后,我无法通过按钮重新打开流,它没有任何功能。
但我想用第二个代码。我有多个按钮,因此只能更改每个按钮的参数。对于第一个代码,我必须为每个流编写一个新函数。
请帮帮我:(
谢谢!

最佳答案

您正在执行startstream而不是分配它*。要给出参数,请使用以下命令:

button_tnt = Button(fenster,
                    text="TNT Serie HD",
                    command= lambda: startstream('http://dreambox:8001/1:0:19:7B:B:85:C00000:0:0:0:'))

*具体来说,就是执行startstream(..)并将结果分配给command
lambda将创建单击时命令将调用的函数。

关于python - Python-子进程错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23705034/

10-14 19:54