首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pyarmor多次显示tkinter窗口。

pyarmor多次显示tkinter窗口。
EN

Stack Overflow用户
提问于 2022-09-03 19:23:30
回答 1查看 35关注 0票数 0

在tool.py代码脚本下面,同时使用cmd运行该代码

tool.py命令,它100%成功运行。

当我试图在cmd中使用pyarmor命令打包代码时

pyarmor -e“-onefile”tool.py

然后我运行exe文件,当我按submit按钮时,它会显示win00窗口,首先它开始运行代码。

但是在运行它的过程中,它再次显示tkinter win00窗口,这将停止第一段代码的运行。

Func00和Func01包括多处理过程,每个Func包含5个进程。

tool.py

代码语言:javascript
复制
import tkinter as tk
from deployedFunc00 import *
from deployedFunc01 import *

def button_fn():
    if clicked.get() == 'func00':
        if __name__ == '__main__':
            Func00()
    else:
        if __name__ == '__main__':
            Func01()
            
def show():
    label_.config(text=clicked.get())
    
if __name__ == '__main__':
    win00 = tk.Tk()
    win00.geometry("300x300")
    win00.eval('tk::PlaceWindow . center')

    frame00 = tk.Frame(win00)
    frame00.pack_propagate(0)
    frame00.pack(fill=tk.BOTH, expand=1)

    options = ['func00','func01']
    clicked = tk.StringVar()
    clicked.set('func00')

    drop = tk.OptionMenu(frame00, clicked, *options)
    drop.pack()
    
    label_ = tk.Label(frame00, text=" ")
    label_.pack()
    
    button0 = tk.Button(frame00,text="choose",command=show).pack()

    button1 = tk.Button(frame00,text='submit',command= button_fn)
    button1.pack(side=tk.BOTTOM,pady=(0,10))

    win00.mainloop()

deployedFunc00.py

代码语言:javascript
复制
import multiprocessing
from func05 import *


def Func00():
    LENGTH = 5


    jobs = []         
    for n in range(LENGTH):
        globals()['p_%s' %n] = multiprocessing.Process(target = Func05)
        
    for n in range(LENGTH):
        jobs.append(globals()['p_%s' %n])
        
    for n in range(LENGTH):
        globals()['p_%s' %n].start()
        
    for proc in jobs:
        proc.join()

deployedFunc01.py

代码语言:javascript
复制
import multiprocessing

from func06 import *

def Func01():
    LENGTH = 5


    jobs = []         
    for n in range(LENGTH):
        globals()['p_%s' %n] = multiprocessing.Process(target = Func06)
        
    for n in range(LENGTH):
        jobs.append(globals()['p_%s' %n])
        
    for n in range(LENGTH):
        globals()['p_%s' %n].start()
        
    for proc in jobs:
        proc.join()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-11 20:11:45

最后我找到了一个解决方案:只需

代码语言:javascript
复制
multiprocessing.freeze_support()

之后

代码语言:javascript
复制
if __name__ == '__main__':

参考资料:https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessing

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73594921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档