当 运行 已转换为 .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.systemos.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 用于特定行为,但先尝试普通的 运行。