gpt4 book ai didi

python - 使用带有可执行 python 脚本的 CMD 命令

转载 作者:可可西里 更新时间:2023-11-01 10:12:09 27 4
gpt4 key购买 nike

在编写下面的脚本(完美运行)后,我打开 cmd.exe 窗口提示符并键入以下内容

pyinstaller -F --windowed myscript.py

这给了我一个名为“myscript.exe”的文件。

问题是当我打开可执行文件并按下按钮时,没有任何反应。我认为这一行有问题:

check_output("shutdown -s -t 60", shell=True)  

即使脚本“作为脚本”工作,它也不能作为可执行文件工作。
我尝试过其他语法,例如

os.system("shutdown -s -t 60") 

但它们似乎不起作用。

from tkinter import *
from subprocess import check_output,CalledProcessError

class main_gui:
def __init__(self,master):
self.master=master
master.geometry("250x100")
self.button1=Button(self.master,
text="Press me",
font="Times 10 bold",
command=self.shutdown)
self.button1.pack()

def shutdown(self):
try:
check_output("shutdown -s -t 60", shell=True)
print("Computer will shutdown in 60 seconds")
except CalledProcessError:
print("Already pressed")

root = Tk()
my_gui = main_gui(root)
root.mainloop()

我能做什么?

最佳答案

您可以做什么:

使用:

import subprocess
subprocess.call(["shutdown", "-f", "-s", "-t", "60"])

这会起作用。使用 --windowed

这似乎是 check_output--windowed 标志有问题:/

Edit1:

基于 eryksun注释。 我的研究结果也是如此,但现在看来是证据。

使用check_call 和创建标志来避免创建控制台窗口。例如:CREATE_NO_WINDOW = 0x08000000; check_call('shutdown -s -t 60', creationflags=CREATE_NO_WINDOW).

关于 check_output,因为它覆盖了 stdoutPopen 还必须复制现有 stdin 和 stderr 句柄的可继承副本。如果它们无效,这将失败。当从 Windows 7 的控制台运行时,GUI 可以继承无效的标准句柄。解决方法是覆盖所有 3 个句柄。例如:output = check_output('shutdown -s -t 60', stdin=subprocess.DEVNULL, stderr=subprocess.DEVNULL, creationflags=CREATE_NO_WINDOW

Edit2:

也可以直接用pyinstaller添加图标...
引用:Windows and Mac OS X specific options

关于python - 使用带有可执行 python 脚本的 CMD 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54014038/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com