当 运行 已转换为 .exe 的文件时无法隐藏 cmd.exe
Unable to hide cmd.exe when running the already converted file to .exe
我在网上找了又找,尝试almost每个代码,但仍然无法从后台隐藏cmd.exe(仅当命令是从计算机打开exe时才会发生- 例如,打开 word.exe),其他按钮不会打开 cmd.exe,因为是打开来自网络的链接。抱歉,我是 python 的初学者,我只是让老师给我们讲了一些基础知识,但我爱上了 python,所以我决定在家学习并继续努力应用。
非常感谢任何给定的答复。和平
注意:我有两个文件。一个 python 已经转换为 exe,一个在 python itslef 中,我尝试 pyw、pyc,在一个 python window 中打开,在另一个中打开,你可以想想我已经做到了。现在我正在处理 python (boss.pyw) 的原始文件,我将在下面显示完整代码以及我应该将命令放在哪里,这样 cmd.exe 就不会出现。
导入函数工具
导入系统
导入 ctypes
导入 urllib.request
导入 os
导入网络浏览器
从 tkinter 导入 *
导入空闲库
从 tkinter 导入消息框
将 tkinter 导入为 tk
导入子进程
def programs():
class LoginFrame(Frame):
def __init__(self, master):
super().__init__(master)
self.logbtn0 = Button(self, text="SKIDROW", command=self._login_btn_clicked0, fg='#ff00bf', height = 4, width = 12)
self.logbtn0.grid(columnspan=4)
self.logbtn6 = Button(self, text="""Planet
Romeo""", command=self._login_btn_clicked6, fg='#990000', height = 4, width = 12)
self.logbtn6.grid(columnspan=4)
self.logbtn7 = Button(self, text="""Sair
Programa""", command=self._login_btn_clicked7, fg='#b366ff', height = 4, width = 12)
self.logbtn7.grid(columnspan=4)
self.logbtn = Button(self, text="EXCEL", command=self._login_btn_clicked, fg='#00b33c', height = 4, width = 12)
self.logbtn.grid(columnspan=2)
self.logbtn1 = Button(self, text="WORD", command=self._login_btn_clicked1, fg='#ff4000', height = 4, width = 12)
self.logbtn1.grid(columnspan=2)
self.logbtn5 = Button(self, text="FILMORA", command=self._login_btn_clicked5, fg='#ff00bf', height = 4, width = 12)
self.logbtn5.grid(columnspan=1)
self.logbtn2 = Button(self, text="NOTEPAD", command=self._login_btn_clicked2, fg='#0000ff', height = 4, width = 12)
self.logbtn2.grid(columnspan=1)
self.logbtn3 = Button(self, text="""POWER POINT
""", command=self._login_btn_clicked3, fg='#8000ff', height = 4, width = 12)
self.logbtn3.grid(columnspan=1)
self.logbtn4 = Button(self, text="FACEBOOK", command=self._login_btn_clicked4, fg='#0059b3', height = 4, width = 12)
self.logbtn4.grid(columnspan=2)
self.logbtn0.grid(row=1, sticky=N)
self.logbtn.grid(row=1, sticky=N)
self.logbtn1.grid(row=2, sticky=N)
self.logbtn2.grid(row=1, sticky=N)
self.logbtn3.grid(row=2, sticky=N)
self.logbtn4.grid(row=3, sticky=N)
self.logbtn5.grid(row=3, sticky=N)
self.logbtn6.grid(row=2, sticky=N)
self.logbtn7.grid(row=3, sticky=N)
self.logbtn0.grid(row=1, column=4)
self.logbtn.grid(row=1, column=2)
self.logbtn1.grid(row=2, column=2)
self.logbtn2.grid(row=1, column=1)
self.logbtn3.grid(row=2, column=1)
self.logbtn4.grid(row=3, column=2)
self.logbtn5.grid(row=3, column=1)
self.logbtn6.grid(row=2, column=4)
self.logbtn7.grid(row=3, column=4)
self.pack()
def _login_btn_clicked(self):
dialog_title = "Responda por favor"
dialog_text = "DESEJA ABRIR O EXCEL?"
answer = messagebox.askquestion(dialog_title, dialog_text,)
if answer == "yes":
path = "C:/Program Files (x86)/Microsoft Office/root/Office16/"
os.chdir(path)
os.system("EXCEL.exe")
else:
return
def _login_btn_clicked1(self):
dialog_title = "Responda por favor"
dialog_text = "DESEJA ABRIR O WORD?"
answer = messagebox.askquestion(dialog_title, dialog_text,)
if answer == "yes":
path = "C:/Program Files (x86)/Microsoft Office/root/Office16/"
os.chdir(path)
os.system("WINWORD.exe")
else:
return
def _login_btn_clicked2(self):
dialog_title = "Responda por favor"
dialog_text = "DESEJA ABRIR O NOTEPAD?"
answer = messagebox.askquestion(dialog_title, dialog_text,)
if answer == "yes":
path = "C:/Program Files (x86)/Notepad++"
os.chdir(path)
os.system("notepad++.exe")
else:
return
def _login_btn_clicked3(self):
dialog_title = "Responda por favor"
dialog_text = """DESEJA ABRIR O POWER
POINT?"""
answer = messagebox.askquestion(dialog_title, dialog_text,)
if answer == "yes":
path = "C:/Program Files (x86)/Microsoft Office/root/Office16"
os.chdir(path)
os.system("POWERPNT.exe")
else:
return
def _login_btn_clicked4(self):
dialog_title = "Responda por favor"
dialog_text = "DESEJA IR PARA ESTE SITE?"
answer = messagebox.askquestion(dialog_title, dialog_text,)
if answer == "yes":
webbrowser.open('https://www.facebook.com/francisco.neves.16718979')
else:
return
def _login_btn_clicked0(self):
dialog_title = "Responda por favor"
dialog_text = "DESEJA IR PARA ESTE SITE?"
answer = messagebox.askquestion(dialog_title, dialog_text,)
if answer == "yes":
webbrowser.open('https://www.skidrowreloaded.com/')
else:
return
def _login_btn_clicked5(self):
dialog_title = "Responda por favor"
dialog_text = "DESEJA ABRIR O FILMORA?"
answer = messagebox.askquestion(dialog_title, dialog_text,)
if answer == "yes":
path = "C:/Program Files/Wondershare/Filmora"
os.chdir(path)
os.system("Filmora.exe")
else:
return
def _login_btn_clicked6(self):
dialog_title = "Responda por favor"
dialog_text = "DESEJA IR PARA ESTE SITE?"
answer = messagebox.askquestion(dialog_title, dialog_text,)
if answer == "yes":
webbrowser.open('https://www.planetromeo.com/radar/home')
else:
return
def _login_btn_clicked7(self):
quit()
root = tk.Tk()
lf = LoginFrame(root)
root.mainloop()
def main():
programs()
if __name__ == ("__main__"):
main()
在将 .py 转换为 .exe 时添加此标志
---windowed
停止使用os.system
; os.system
运行 在 shell 中有问题的程序,在 Windows 中,这意味着 cmd.exe
。使用 subprocess
模块启动程序 而无需 shell 包装,它应该可以正常工作。例如:
os.system("POWERPNT.exe")
直接替换with subprocess.run
:
subprocess.run(["POWERPNT.exe"])
或者让它 运行 在后台运行,use Popen
instead. You may also want to look at passing startupinfo
on Windows 用于特定行为,但先尝试普通的 运行。
我在网上找了又找,尝试almost每个代码,但仍然无法从后台隐藏cmd.exe(仅当命令是从计算机打开exe时才会发生- 例如,打开 word.exe),其他按钮不会打开 cmd.exe,因为是打开来自网络的链接。抱歉,我是 python 的初学者,我只是让老师给我们讲了一些基础知识,但我爱上了 python,所以我决定在家学习并继续努力应用。 非常感谢任何给定的答复。和平
注意:我有两个文件。一个 python 已经转换为 exe,一个在 python itslef 中,我尝试 pyw、pyc,在一个 python window 中打开,在另一个中打开,你可以想想我已经做到了。现在我正在处理 python (boss.pyw) 的原始文件,我将在下面显示完整代码以及我应该将命令放在哪里,这样 cmd.exe 就不会出现。
导入函数工具 导入系统 导入 ctypes 导入 urllib.request 导入 os 导入网络浏览器 从 tkinter 导入 * 导入空闲库 从 tkinter 导入消息框 将 tkinter 导入为 tk 导入子进程
def programs():
class LoginFrame(Frame):
def __init__(self, master):
super().__init__(master)
self.logbtn0 = Button(self, text="SKIDROW", command=self._login_btn_clicked0, fg='#ff00bf', height = 4, width = 12)
self.logbtn0.grid(columnspan=4)
self.logbtn6 = Button(self, text="""Planet
Romeo""", command=self._login_btn_clicked6, fg='#990000', height = 4, width = 12)
self.logbtn6.grid(columnspan=4)
self.logbtn7 = Button(self, text="""Sair
Programa""", command=self._login_btn_clicked7, fg='#b366ff', height = 4, width = 12)
self.logbtn7.grid(columnspan=4)
self.logbtn = Button(self, text="EXCEL", command=self._login_btn_clicked, fg='#00b33c', height = 4, width = 12)
self.logbtn.grid(columnspan=2)
self.logbtn1 = Button(self, text="WORD", command=self._login_btn_clicked1, fg='#ff4000', height = 4, width = 12)
self.logbtn1.grid(columnspan=2)
self.logbtn5 = Button(self, text="FILMORA", command=self._login_btn_clicked5, fg='#ff00bf', height = 4, width = 12)
self.logbtn5.grid(columnspan=1)
self.logbtn2 = Button(self, text="NOTEPAD", command=self._login_btn_clicked2, fg='#0000ff', height = 4, width = 12)
self.logbtn2.grid(columnspan=1)
self.logbtn3 = Button(self, text="""POWER POINT
""", command=self._login_btn_clicked3, fg='#8000ff', height = 4, width = 12)
self.logbtn3.grid(columnspan=1)
self.logbtn4 = Button(self, text="FACEBOOK", command=self._login_btn_clicked4, fg='#0059b3', height = 4, width = 12)
self.logbtn4.grid(columnspan=2)
self.logbtn0.grid(row=1, sticky=N)
self.logbtn.grid(row=1, sticky=N)
self.logbtn1.grid(row=2, sticky=N)
self.logbtn2.grid(row=1, sticky=N)
self.logbtn3.grid(row=2, sticky=N)
self.logbtn4.grid(row=3, sticky=N)
self.logbtn5.grid(row=3, sticky=N)
self.logbtn6.grid(row=2, sticky=N)
self.logbtn7.grid(row=3, sticky=N)
self.logbtn0.grid(row=1, column=4)
self.logbtn.grid(row=1, column=2)
self.logbtn1.grid(row=2, column=2)
self.logbtn2.grid(row=1, column=1)
self.logbtn3.grid(row=2, column=1)
self.logbtn4.grid(row=3, column=2)
self.logbtn5.grid(row=3, column=1)
self.logbtn6.grid(row=2, column=4)
self.logbtn7.grid(row=3, column=4)
self.pack()
def _login_btn_clicked(self):
dialog_title = "Responda por favor"
dialog_text = "DESEJA ABRIR O EXCEL?"
answer = messagebox.askquestion(dialog_title, dialog_text,)
if answer == "yes":
path = "C:/Program Files (x86)/Microsoft Office/root/Office16/"
os.chdir(path)
os.system("EXCEL.exe")
else:
return
def _login_btn_clicked1(self):
dialog_title = "Responda por favor"
dialog_text = "DESEJA ABRIR O WORD?"
answer = messagebox.askquestion(dialog_title, dialog_text,)
if answer == "yes":
path = "C:/Program Files (x86)/Microsoft Office/root/Office16/"
os.chdir(path)
os.system("WINWORD.exe")
else:
return
def _login_btn_clicked2(self):
dialog_title = "Responda por favor"
dialog_text = "DESEJA ABRIR O NOTEPAD?"
answer = messagebox.askquestion(dialog_title, dialog_text,)
if answer == "yes":
path = "C:/Program Files (x86)/Notepad++"
os.chdir(path)
os.system("notepad++.exe")
else:
return
def _login_btn_clicked3(self):
dialog_title = "Responda por favor"
dialog_text = """DESEJA ABRIR O POWER
POINT?"""
answer = messagebox.askquestion(dialog_title, dialog_text,)
if answer == "yes":
path = "C:/Program Files (x86)/Microsoft Office/root/Office16"
os.chdir(path)
os.system("POWERPNT.exe")
else:
return
def _login_btn_clicked4(self):
dialog_title = "Responda por favor"
dialog_text = "DESEJA IR PARA ESTE SITE?"
answer = messagebox.askquestion(dialog_title, dialog_text,)
if answer == "yes":
webbrowser.open('https://www.facebook.com/francisco.neves.16718979')
else:
return
def _login_btn_clicked0(self):
dialog_title = "Responda por favor"
dialog_text = "DESEJA IR PARA ESTE SITE?"
answer = messagebox.askquestion(dialog_title, dialog_text,)
if answer == "yes":
webbrowser.open('https://www.skidrowreloaded.com/')
else:
return
def _login_btn_clicked5(self):
dialog_title = "Responda por favor"
dialog_text = "DESEJA ABRIR O FILMORA?"
answer = messagebox.askquestion(dialog_title, dialog_text,)
if answer == "yes":
path = "C:/Program Files/Wondershare/Filmora"
os.chdir(path)
os.system("Filmora.exe")
else:
return
def _login_btn_clicked6(self):
dialog_title = "Responda por favor"
dialog_text = "DESEJA IR PARA ESTE SITE?"
answer = messagebox.askquestion(dialog_title, dialog_text,)
if answer == "yes":
webbrowser.open('https://www.planetromeo.com/radar/home')
else:
return
def _login_btn_clicked7(self):
quit()
root = tk.Tk()
lf = LoginFrame(root)
root.mainloop()
def main():
programs()
if __name__ == ("__main__"):
main()
在将 .py 转换为 .exe 时添加此标志
---windowed
停止使用os.system
; os.system
运行 在 shell 中有问题的程序,在 Windows 中,这意味着 cmd.exe
。使用 subprocess
模块启动程序 而无需 shell 包装,它应该可以正常工作。例如:
os.system("POWERPNT.exe")
直接替换with subprocess.run
:
subprocess.run(["POWERPNT.exe"])
或者让它 运行 在后台运行,use Popen
instead. You may also want to look at passing startupinfo
on Windows 用于特定行为,但先尝试普通的 运行。