鱼C论坛

 找回密码
 立即注册
查看: 1830|回复: 1

求助大神 tkinter 编译成exe出问题

[复制链接]
发表于 2019-8-5 10:45:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我有一个tkinter程序,想通过pyinstaller 编译成exe执行程序,开始已经成功了,后来我再编写,告诉我  failed to execute script answer  原因是没有numpy.random.common 模块,可是我重新安装模块也还是没有。但是之前运行成功过啊,求大神帮忙。 我想要32位的。14794429947 拜谢
  1. #!/usr/bin/python
  2. # -- coding: utf-8 --
  3. import fnmatch  #选择文件的关键词
  4. import os
  5. from time import sleep
  6. from tkinter import *
  7. import tkinter.filedialog #弹出选择路径的库
  8. import tkinter.messagebox
  9. import fnmatch  #选择文件的关键词
  10. import re
  11. import pandas as pd
  12. import docx
  13. import pickle
  14. import  codecs
  15. import string
  16. import shutil
  17. from win32com import client as wc



  18. def matchdocname(str1,root,i,list_box):
  19.     if str1 in os.path.splitext(i)[0]:
  20.         list_box.insert(END, root+"/"+i)
  21. def matchdoccontent(str1,root,i,list_box):   
  22.     if i.endswith('txt'):                                               #当文件为txt时
  23.         with open(os.path.join(root, i) ,'r') as fp:
  24.             errors=''
  25.             aa=fp.read()
  26.             if str1 in aa :
  27.                 list_box.insert(END, root+"/"+i)  
  28.     if i.endswith('xls') or i.endswith('xlsx') :                        #当文件为excel时
  29.         df=pd.read_excel(os.path.join(root, i))
  30.         df=df.values
  31.         for k in df:
  32.             for j in k:
  33.                 j=str(j)
  34.                 if  str1 in j:
  35.                     list_box.insert(END, root+"/"+i)
  36.     if i.endswith('docx'):                                               #当文件为.docx时
  37.         word = wc.Dispatch('Word.Application')
  38.         doc = word.Documents.Open(os.path.join(root, i))      
  39.         newname=os.path.join(root, i)+"(translate txt)"
  40.         doc.SaveAs(newname,4)   
  41.         doc.Close()
  42.         word.Quit()
  43.         with open(newname ,'r') as fp:
  44.             errors=''
  45.             aa=fp.read()
  46.             if str1 in aa :
  47.                 list_box.insert(END, root+"/"+i)
  48.         os.remove(newname)                                 
  49.     if i.endswith('doc'):                                               #当文件为.doc时  
  50.         word = wc.Dispatch('Word.Application')
  51.         doc = word.Documents.Open(os.path.join(root, i))      
  52.         newname=os.path.join(root, i)+"(translate txt)"
  53.         doc.SaveAs(newname,4)   
  54.         doc.Close()
  55.         word.Quit()
  56.         with open(newname ,'r') as fp:
  57.             errors=''
  58.             aa=fp.read()
  59.             if str1 in aa :
  60.                 list_box.insert(END, root+"/"+i)
  61.         os.remove(newname)                                           #删掉这个临时文件
  62.    
  63. def left():  
  64.     if not entry.get()  :#检测关键词输入框是否为空
  65.         tkinter.messagebox.showerror("提示信息:","出现以下错误:\n关键词不能为空")#弹出警告框
  66.         return #如果为空不再执行
  67.     if var1.get()==0 and var2.get()==0  :
  68.         tkinter.messagebox.showerror("提示信息:","出现以下错误:\n匹配项不能为空")#弹出警告框
  69.         return #如果为空不再执行
  70.     list_box.delete(0,END)
  71.     path = tkinter.filedialog.askdirectory()#弹出选择路径的窗口,path为获取的路径
  72.     path_list = os.walk(path)#获取一个列表目录的对象
  73.     for root, dirs, files in path_list:
  74.         #print root, dirs, files
  75.         if var1.get()==1 and  var2.get()==0:              #当只匹配文件名时
  76.             list_box.insert(END, '文件名')  
  77.             for i in files:
  78.                 matchdocname(entry.get(),root,i,list_box)
  79.         elif var1.get()==0 and var2.get()==1:            #当只匹配文件内容时
  80.             list_box.insert(END, '文件内容')
  81.             for i in files:
  82.                 matchdoccontent(entry.get(),root,i,list_box)
  83.         elif var1.get()==1 and  var2.get()==1:            #当既匹配文件名又匹配文件内容时
  84.             list_box.insert(END, '文件名')  
  85.             for i in files:  
  86.                 matchdocname(entry.get(),root,i,list_box)
  87.             list_box.insert(END, '--------------')
  88.             list_box.insert(END, '文件内容')
  89.             for i in files:
  90.                 matchdoccontent(entry.get(),root,i,list_box)

  91. def func2(e):
  92.      if not list_box.curselection():#取双击的坐标52
  93.          return
  94.      path = list_box.get(list_box.curselection(),last=None)
  95.      os.startfile(path)



  96. def nagea(e):
  97.     error = ''
  98.     tdir = dirs.get(dirs.curselection())
  99.     if os.path.isfile(tdir):        #如果是文件 则打开
  100.         os.startfile(tdir)
  101.     elif os.path.isdir(tdir):       #如果是文件夹 则调用dols
  102.         setDirAndGo()

  103. def wenjianshu():
  104.     dirs.delete(0,END)
  105.     path = tkinter.filedialog.askdirectory()#弹出选择路径的窗口,path为获取的路径
  106.     doLS1(path)

  107. #双击时调用,双击时,设置背景色为红色,并调用doLS函数打开所选文件
  108. def setDirAndGo(ev=None):
  109.     last = cwd.get()
  110.     dirs.config(selectbackground='red')
  111.     check = dirs.get(dirs.curselection())
  112.     if not check:
  113.         check = os.curdir
  114.     cwd.set(check)
  115.     doLS()

  116. #实现更新目录的核心函数
  117. def doLS(ev=None):
  118.     error = ''
  119.     tdir = cwd.get()
  120.     if not tdir:tdir=os.curdir
  121.         #若路径输入错误,或者打开的是文件,而不是目录,则更新错误提示信息
  122.     if not os.path.exists(tdir):
  123.         error = os.getcwd()+'\\'+tdir + ':未找到文件'
  124.     elif not os.path.isdir(tdir):
  125.         error = os.getcwd()+'\\'+tdir + ':未找到目录'
  126.     if error:
  127.         cwd.set(error)
  128.         top2.update()
  129.         sleep(1)
  130.         cwd.set(os.curdir)
  131.         dirs.config(selectbackground='LightSkyBlue')

  132.         top2.update()
  133.         return

  134.     cwd.set(os.getcwd()+'\\'+tdir)
  135.     top2.update()
  136.     dirlist = os.listdir(tdir)#os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
  137.     dirlist.sort()
  138.     os.chdir(tdir)#os.chdir() 方法用于改变当前工作目录到指定的路径。

  139.         #更新界面上方标签内容
  140.     dirl.config(text=os.getcwd())
  141.     top2.update()

  142.     dirs.delete(0,END)
  143.     dirs.insert(END,os.pardir)#os.chdir(os.pardir)  切换到上级目录 即将上级目录.. 插入到dirs对象中

  144.         #把选定目录的文件或文件夹的名字的列表依次插入到dirs对象中
  145.     for eachFile in dirlist:
  146.         dirs.insert(END,eachFile)
  147.         cwd.set(os.curdir)
  148.         dirs.config(selectbackground='LightSkyBlue')

  149. def doLS1(tdir):
  150.     error = ''
  151.     if not tdir:tdir=os.curdir
  152.         #若路径输入错误,或者打开的是文件,而不是目录,则更新错误提示信息
  153.     if not os.path.exists(tdir):
  154.         error = os.getcwd()+'\\'+tdir + ':未找到文件'
  155.     elif not os.path.isdir(tdir):
  156.         error = os.getcwd()+'\\'+tdir + ':未找到目录'
  157.     if error:
  158.         cwd.set(error)
  159.         top2.update()
  160.         sleep(1)
  161.         cwd.set(os.curdir)
  162.         dirs.config(selectbackground='LightSkyBlue')
  163.         top2.update()
  164.         return

  165.     cwd.set(os.getcwd()+'\\'+tdir)
  166.     top2.update()
  167.     dirlist = os.listdir(tdir)#os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
  168.     dirlist.sort
  169.     os.chdir(tdir)#os.chdir() 方法用于改变当前工作目录到指定的路径。

  170.     #更新界面上方标签内容
  171.     dirl.config(text=os.getcwd())
  172.     top2.update()

  173.     dirs.delete(0,END)
  174.     dirs.insert(END,os.pardir)#os.chdir(os.pardir)  切换到上级目录 即将上级目录.. 插入到dirs对象中

  175.         #把选定目录的文件或文件夹的名字的列表依次插入到dirs对象中
  176.     for eachFile in dirlist:
  177.         dirs.insert(END,eachFile)
  178.         cwd.set(os.curdir)
  179.         dirs.config(selectbackground='LightSkyBlue')


  180. top2 = Tk()
  181. top2.title('营销集约管控中心-文件管理')
  182. top2.geometry('+50+50')#窗口大小,窗口位置
  183. cwd = StringVar(top2)
  184. var=IntVar()
  185. dirl = Label(top2,fg = 'BLUE',font = ('Helvetica',18,'bold'))
  186. dirl.pack()
  187. dirfm = Frame(top2)

  188. dirs = Listbox(dirfm,height=25,width=90)
  189. #通过使用List的bind()方法,将鼠标双击事件绑定,并调用setDirAndGo函数
  190. dirs.bind('<Double-1>',nagea)

  191. dirs.pack(side=LEFT,fill=BOTH)

  192. list_box = Listbox(dirfm,height=25,width=90)
  193. list_box.bind('<Double-Button-1>',func2) #绑定一个双击触发事件
  194. list_box.pack(side=LEFT,fill=BOTH)#显示列表框

  195. dirfm.pack()

  196. #第二个框架bfm,放置按钮
  197. bfm = Frame(top2)
  198. open1 = Button(bfm,text='文件树',command=wenjianshu,activeforeground='white',activebackground='blue')
  199. open1.pack(side=LEFT)
  200. bfm.pack(side=LEFT,fill=BOTH)
  201. #多选框插件
  202. var1 = tkinter.IntVar()  # 用来储存下面勾选项1中返回的0或1
  203. var2 = tkinter.IntVar()  # 用来储存下面勾选项2中返回的0或1

  204. button2=tkinter.Checkbutton(top2,text="匹配文件内容",variable=var2,onvalue=1,offvalue=0)
  205. button2.pack(side=RIGHT,fill=BOTH)
  206. button1=tkinter.Checkbutton(top2,text="匹配文件名",variable=var1,onvalue=1,offvalue=0)
  207. button1.pack(side=RIGHT,fill=BOTH)
  208. #按钮控件
  209. entry = Entry()#输入框实例化
  210. entry.pack(side=RIGHT,fill=BOTH)#输入框
  211. button2=Button(top2,text="关键字",command=left)
  212. button2.pack(side=RIGHT,fill=BOTH)


  213. if __name__ =='__main__':
  214.     #设定初始目录为桌面
  215.     mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-8-5 11:09:20 | 显示全部楼层
把pyinstall的帮助文件好好研究一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-17 11:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表