繁体   English   中英

我的多线程 tkinter 代码仅在我在 Pycharm 上运行时才有效,而不是在 an.exe 中。 它会打开一个不需要的 window,即使使用 __name__ == "__main__"

[英]My multithread tkinter code only works when I run it on Pycharm, not in an .exe. It opens an unwanted window, even with __name__ == "__main__"

我在这个项目中有多个文件,在这种特殊情况下,我从另一个文件中调用 function。

from botmain import Execute

def EXECUTE_BOT(first_line, last_line, filename, padrao_comunicacao, concentrador, varredura, eventos, osci, param, ons,
                empresa, grpparam, cnldgt, addparams):
    time.sleep(5)
    Execute(first_line,
            last_line,
            filename,
            padrao_comunicacao,
            concentrador,
            varredura,
            eventos,
            osci,
            param,
            ons,
            empresa,
            grpparam,
            cnldgt,
            addparams)

if __name__ == '__main__':
    root = Tk()
    root.grab_set()
    root.resizable = False
    frm = ttk.Frame(root, padding=20)
    frm.grid()

    ttk.Button(frm, text="EXECUTAR", command=lambda: EXECUTE_BOT(wdg_firstLine.get(),
                                                                 wdg_lastLine.get(),
                                                                 wdg_sheetdirectory.cget("text"),
                                                                 wdg_padrao_comunicacao.get(),
                                                                 wdg_conc.get(),
                                                                 radio_var.get(),
                                                                 radio_eve.get(),
                                                                 radio_osc.get(),
                                                                 radio_param.get(),
                                                                 radio_ons.get(),
                                                                 wdg_empresa.get(),
                                                                 wdg_grpParam.get(),
                                                                 wdg_cnlDgt.get(),
                                                                 converAddParam(addparam_list))).grid(column=5, row=22)

当我在 Pycharm 上运行此代码时,它运行得很好,但是当我使用 pyinstaller 将其设为 a.exe 时,它停止工作,并且每次单击该按钮时它都会打开另一个 window。 我通过将我的代码放入name == " main " 中修复了这个错误,但是当我将它设为 an.exe 时,它得到的错误与我没有它时相同。

嘻嘻!!!

我有一个类似的问题,但是当我的多线程 function 被调用时,它为每个进程创建了一个新的root multiprocessing freeze_support()是答案,请在此处阅读文档

if __name__ == '__main__':
    multiprocessing.freeze_support() # to stop exe popups when threaded

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM