鱼C论坛

 找回密码
 立即注册
查看: 2955|回复: 6

[已解决]将py文件封装成EXE文件后,打开后显示exit未被定义

[复制链接]
发表于 2023-2-16 15:11:52 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 18305177067 于 2023-2-16 15:53 编辑

py文件中代码为
  1. import tkinter.filedialog as tf
  2. import ttkbootstrap as ttk
  3. from ttkbootstrap.constants import *
  4. from ttkbootstrap.dialogs import Messagebox as msgbox
  5. from pdf2docx import Converter
  6. from docx2pdf import convert
  7. import os


  8. def pdf_to_words():
  9.     folder = tf.askdirectory(title='选择文件夹')
  10.     try:
  11.         for file in os.listdir(folder):
  12.             suff_name = os.path.splitext(file)[1] # 分离出扩展名
  13.             if suff_name != '.pdf': # 如果不是PDF文档就退出
  14.                 continue
  15.             file_name = os.path.splitext(file)[0] # 分离出文件名
  16.             pdf_file = folder + '\\' + file
  17.             word_file = folder + '\\' + file_name + '.docx' # 进行转义并加上扩展名
  18.             cv = Converter(pdf_file) # 转成Word
  19.             cv.convert(word_file)
  20.             cv.close()
  21.         msgbox.show_info('转换成功!')
  22.     except FileNotFoundError:
  23.         msgbox.show_error('你没有选择任何文件夹!')

  24. def pdf_to_word():
  25.     try:
  26.         pdffile = tf.askopenfilename(title='选择PDF文档') # 选择文件
  27.         wordfile = os.path.splitext(pdffile)[0] + '.docx'
  28.         cv = Converter(pdffile)
  29.         cv.convert(wordfile)
  30.         cv.close()
  31.         msgbox.show_info('转换成功!')
  32.     except FileNotFoundError:
  33.         msgbox.show_error('你没有选择任何文件!')

  34. def word_to_pdf():
  35.     try:
  36.         inputfile = tf.askopenfilename(title='选择docx文档')
  37.         outputfile = os.path.splitext(inputfile)[0] + '.pdf'
  38.         f1 = open(outputfile, 'w')
  39.         f1.close()
  40.         convert(inputfile, outputfile)
  41.         msgbox.show_info('转换成功!')
  42.     except FileNotFoundError:
  43.         msgbox.show_error('你没有选择任何文件!')

  44. def about():
  45.     msgbox.show_info(message='版本号:v2.0\n制作者:鱼C论坛 liuhongrun2022')


  46. root = ttk.Window()
  47. root.title('PDF_to_Word2.0')
  48. root.geometry('900x100')

  49. b1 = ttk.Button(root, text="pdf批量转word", bootstyle='info-outline', command=pdf_to_words)
  50. b1.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  51. b2 = ttk.Button(root, text='pdf单文件转word', bootstyle='warning-outline', command=pdf_to_word)
  52. b2.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  53. b5 = ttk.Button(root, text='word转pdf',bootstyle='info-outline', command=word_to_pdf)
  54. b5.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  55. b3 = ttk.Button(root, text='关于', bootstyle='success-outline', command=about)
  56. b3.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  57. b4 = ttk.Button(root, text='退出',bootstyle='danger-outline', command=exit)
  58. b4.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  59. l = ttk.Label(root, bootstyle='inverse-warning', text='转换中出现"未响应"为正常现象。')
  60. l.pack(side=LEFT, padx=5, pady=5, fill=BOTH)
  61. l.configure(font=('微软雅黑 Light',9))

  62. root.mainloop()
复制代码

在编辑器中可以运行!!!
请求大佬帮助!!!
最佳答案
2023-2-16 16:22:37

这个 exit 是终端才有的内置函数,可能图形界面没有,你换成 root.destroy 吧

对代码修改如下:
  1. import tkinter.filedialog as tf
  2. import ttkbootstrap as ttk
  3. from ttkbootstrap.constants import *
  4. from ttkbootstrap.dialogs import Messagebox as msgbox
  5. from pdf2docx import Converter
  6. from docx2pdf import convert
  7. import os


  8. def pdf_to_words():
  9.     folder = tf.askdirectory(title='选择文件夹')
  10.     try:
  11.         for file in os.listdir(folder):
  12.             suff_name = os.path.splitext(file)[1] # 分离出扩展名
  13.             if suff_name != '.pdf': # 如果不是PDF文档就退出
  14.                 continue
  15.             file_name = os.path.splitext(file)[0] # 分离出文件名
  16.             pdf_file = folder + '\\' + file
  17.             word_file = folder + '\\' + file_name + '.docx' # 进行转义并加上扩展名
  18.             cv = Converter(pdf_file) # 转成Word
  19.             cv.convert(word_file)
  20.             cv.close()
  21.         msgbox.show_info('转换成功!')
  22.     except FileNotFoundError:
  23.         msgbox.show_error('你没有选择任何文件夹!')

  24. def pdf_to_word():
  25.     try:
  26.         pdffile = tf.askopenfilename(title='选择PDF文档') # 选择文件
  27.         wordfile = os.path.splitext(pdffile)[0] + '.docx'
  28.         cv = Converter(pdffile)
  29.         cv.convert(wordfile)
  30.         cv.close()
  31.         msgbox.show_info('转换成功!')
  32.     except FileNotFoundError:
  33.         msgbox.show_error('你没有选择任何文件!')

  34. def word_to_pdf():
  35.     try:
  36.         inputfile = tf.askopenfilename(title='选择docx文档')
  37.         outputfile = os.path.splitext(inputfile)[0] + '.pdf'
  38.         f1 = open(outputfile, 'w')
  39.         f1.close()
  40.         convert(inputfile, outputfile)
  41.         msgbox.show_info('转换成功!')
  42.     except FileNotFoundError:
  43.         msgbox.show_error('你没有选择任何文件!')

  44. def about():
  45.     msgbox.show_info(message='版本号:v2.0\n制作者:鱼C论坛 liuhongrun2022')


  46. root = ttk.Window()
  47. root.title('PDF_to_Word2.0')
  48. root.geometry('900x100')

  49. b1 = ttk.Button(root, text="pdf批量转word", bootstyle='info-outline', command=pdf_to_words)
  50. b1.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  51. b2 = ttk.Button(root, text='pdf单文件转word', bootstyle='warning-outline', command=pdf_to_word)
  52. b2.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  53. b5 = ttk.Button(root, text='word转pdf',bootstyle='info-outline', command=word_to_pdf)
  54. b5.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  55. b3 = ttk.Button(root, text='关于', bootstyle='success-outline', command=about)
  56. b3.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  57. b4 = ttk.Button(root, text='退出',bootstyle='danger-outline', command=root.destroy)                     # 改了这行
  58. b4.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  59. l = ttk.Label(root, bootstyle='inverse-warning', text='转换中出现"未响应"为正常现象。')
  60. l.pack(side=LEFT, padx=5, pady=5, fill=BOTH)
  61. l.configure(font=('微软雅黑 Light',9))

  62. root.mainloop()
复制代码
1676533992917.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-2-16 15:24:03 | 显示全部楼层
本帖最后由 isdkz 于 2023-2-16 16:02 编辑

这里说的是第69行的 exit 没有定义,但是你发的代码都没有 exit ,你就不能发完整代码吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 1

使用道具 举报

发表于 2023-2-16 15:38:46 | 显示全部楼层
这个程序我知道,但好像没有关于 say 的函数?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-16 15:40:38 | 显示全部楼层
isdkz 发表于 2023-2-16 15:24
这里说的是第69行的 say 没有定义,但是你发的代码都没有 say,你就不能发完整代码吗?

这程序我写的
完整代码在这:
(我也不知道为啥打包之后运行报错)
  1. import tkinter.filedialog as tf
  2. import ttkbootstrap as ttk
  3. from ttkbootstrap.constants import *
  4. from ttkbootstrap.dialogs import Messagebox as msgbox
  5. from pdf2docx import Converter
  6. from docx2pdf import convert
  7. import os


  8. def pdf_to_words():
  9.     folder = tf.askdirectory(title='选择文件夹')
  10.     try:
  11.         for file in os.listdir(folder):
  12.             suff_name = os.path.splitext(file)[1] # 分离出扩展名
  13.             if suff_name != '.pdf': # 如果不是PDF文档就退出
  14.                 continue
  15.             file_name = os.path.splitext(file)[0] # 分离出文件名
  16.             pdf_file = folder + '\\' + file
  17.             word_file = folder + '\\' + file_name + '.docx' # 进行转义并加上扩展名
  18.             cv = Converter(pdf_file) # 转成Word
  19.             cv.convert(word_file)
  20.             cv.close()
  21.         msgbox.show_info('转换成功!')
  22.     except FileNotFoundError:
  23.         msgbox.show_error('你没有选择任何文件夹!')

  24. def pdf_to_word():
  25.     try:
  26.         pdffile = tf.askopenfilename(title='选择PDF文档') # 选择文件
  27.         wordfile = os.path.splitext(pdffile)[0] + '.docx'
  28.         cv = Converter(pdffile)
  29.         cv.convert(wordfile)
  30.         cv.close()
  31.         msgbox.show_info('转换成功!')
  32.     except FileNotFoundError:
  33.         msgbox.show_error('你没有选择任何文件!')

  34. def word_to_pdf():
  35.     try:
  36.         inputfile = tf.askopenfilename(title='选择docx文档')
  37.         outputfile = os.path.splitext(inputfile)[0] + '.pdf'
  38.         f1 = open(outputfile, 'w')
  39.         f1.close()
  40.         convert(inputfile, outputfile)
  41.         msgbox.show_info('转换成功!')
  42.     except FileNotFoundError:
  43.         msgbox.show_error('你没有选择任何文件!')

  44. def about():
  45.     msgbox.show_info(message='版本号:v2.0\n制作者:鱼C论坛 liuhongrun2022')


  46. root = ttk.Window()
  47. root.title('PDF_to_Word2.0')
  48. root.geometry('900x100')

  49. b1 = ttk.Button(root, text="pdf批量转word", bootstyle='info-outline', command=pdf_to_words)
  50. b1.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  51. b2 = ttk.Button(root, text='pdf单文件转word', bootstyle='warning-outline', command=pdf_to_word)
  52. b2.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  53. b5 = ttk.Button(root, text='word转pdf',bootstyle='info-outline', command=word_to_pdf)
  54. b5.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  55. b3 = ttk.Button(root, text='关于', bootstyle='success-outline', command=about)
  56. b3.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  57. b4 = ttk.Button(root, text='退出',bootstyle='danger-outline', command=exit)
  58. b4.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  59. l = ttk.Label(root, bootstyle='inverse-warning', text='转换中出现"未响应"为正常现象。')
  60. l.pack(side=LEFT, padx=5, pady=5, fill=BOTH)
  61. l.configure(font=('微软雅黑 Light',9))

  62. root.mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-16 15:54:05 | 显示全部楼层
isdkz 发表于 2023-2-16 15:24
这里说的是第69行的 say 没有定义,但是你发的代码都没有 say,你就不能发完整代码吗?
  1. import tkinter.filedialog as tf
  2. import ttkbootstrap as ttk
  3. from ttkbootstrap.constants import *
  4. from ttkbootstrap.dialogs import Messagebox as msgbox
  5. from pdf2docx import Converter
  6. from docx2pdf import convert
  7. import os


  8. def pdf_to_words():
  9.     folder = tf.askdirectory(title='选择文件夹')
  10.     try:
  11.         for file in os.listdir(folder):
  12.             suff_name = os.path.splitext(file)[1] # 分离出扩展名
  13.             if suff_name != '.pdf': # 如果不是PDF文档就退出
  14.                 continue
  15.             file_name = os.path.splitext(file)[0] # 分离出文件名
  16.             pdf_file = folder + '\\' + file
  17.             word_file = folder + '\\' + file_name + '.docx' # 进行转义并加上扩展名
  18.             cv = Converter(pdf_file) # 转成Word
  19.             cv.convert(word_file)
  20.             cv.close()
  21.         msgbox.show_info('转换成功!')
  22.     except FileNotFoundError:
  23.         msgbox.show_error('你没有选择任何文件夹!')

  24. def pdf_to_word():
  25.     try:
  26.         pdffile = tf.askopenfilename(title='选择PDF文档') # 选择文件
  27.         wordfile = os.path.splitext(pdffile)[0] + '.docx'
  28.         cv = Converter(pdffile)
  29.         cv.convert(wordfile)
  30.         cv.close()
  31.         msgbox.show_info('转换成功!')
  32.     except FileNotFoundError:
  33.         msgbox.show_error('你没有选择任何文件!')

  34. def word_to_pdf():
  35.     try:
  36.         inputfile = tf.askopenfilename(title='选择docx文档')
  37.         outputfile = os.path.splitext(inputfile)[0] + '.pdf'
  38.         f1 = open(outputfile, 'w')
  39.         f1.close()
  40.         convert(inputfile, outputfile)
  41.         msgbox.show_info('转换成功!')
  42.     except FileNotFoundError:
  43.         msgbox.show_error('你没有选择任何文件!')

  44. def about():
  45.     msgbox.show_info(message='版本号:v2.0\n制作者:鱼C论坛 liuhongrun2022')


  46. root = ttk.Window()
  47. root.title('PDF_to_Word2.0')
  48. root.geometry('900x100')

  49. b1 = ttk.Button(root, text="pdf批量转word", bootstyle='info-outline', command=pdf_to_words)
  50. b1.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  51. b2 = ttk.Button(root, text='pdf单文件转word', bootstyle='warning-outline', command=pdf_to_word)
  52. b2.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  53. b5 = ttk.Button(root, text='word转pdf',bootstyle='info-outline', command=word_to_pdf)
  54. b5.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  55. b3 = ttk.Button(root, text='关于', bootstyle='success-outline', command=about)
  56. b3.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  57. b4 = ttk.Button(root, text='退出',bootstyle='danger-outline', command=exit)
  58. b4.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  59. l = ttk.Label(root, bootstyle='inverse-warning', text='转换中出现"未响应"为正常现象。')
  60. l.pack(side=LEFT, padx=5, pady=5, fill=BOTH)
  61. l.configure(font=('微软雅黑 Light',9))

  62. root.mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-16 16:02:35 | 显示全部楼层
liuhongrun2022 发表于 2023-2-16 15:38
这个程序我知道,但好像没有关于 say 的函数?

是我看错了,那里说的是 exit,我改回来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2023-2-16 16:22:37 | 显示全部楼层    本楼为最佳答案   

这个 exit 是终端才有的内置函数,可能图形界面没有,你换成 root.destroy 吧

对代码修改如下:
  1. import tkinter.filedialog as tf
  2. import ttkbootstrap as ttk
  3. from ttkbootstrap.constants import *
  4. from ttkbootstrap.dialogs import Messagebox as msgbox
  5. from pdf2docx import Converter
  6. from docx2pdf import convert
  7. import os


  8. def pdf_to_words():
  9.     folder = tf.askdirectory(title='选择文件夹')
  10.     try:
  11.         for file in os.listdir(folder):
  12.             suff_name = os.path.splitext(file)[1] # 分离出扩展名
  13.             if suff_name != '.pdf': # 如果不是PDF文档就退出
  14.                 continue
  15.             file_name = os.path.splitext(file)[0] # 分离出文件名
  16.             pdf_file = folder + '\\' + file
  17.             word_file = folder + '\\' + file_name + '.docx' # 进行转义并加上扩展名
  18.             cv = Converter(pdf_file) # 转成Word
  19.             cv.convert(word_file)
  20.             cv.close()
  21.         msgbox.show_info('转换成功!')
  22.     except FileNotFoundError:
  23.         msgbox.show_error('你没有选择任何文件夹!')

  24. def pdf_to_word():
  25.     try:
  26.         pdffile = tf.askopenfilename(title='选择PDF文档') # 选择文件
  27.         wordfile = os.path.splitext(pdffile)[0] + '.docx'
  28.         cv = Converter(pdffile)
  29.         cv.convert(wordfile)
  30.         cv.close()
  31.         msgbox.show_info('转换成功!')
  32.     except FileNotFoundError:
  33.         msgbox.show_error('你没有选择任何文件!')

  34. def word_to_pdf():
  35.     try:
  36.         inputfile = tf.askopenfilename(title='选择docx文档')
  37.         outputfile = os.path.splitext(inputfile)[0] + '.pdf'
  38.         f1 = open(outputfile, 'w')
  39.         f1.close()
  40.         convert(inputfile, outputfile)
  41.         msgbox.show_info('转换成功!')
  42.     except FileNotFoundError:
  43.         msgbox.show_error('你没有选择任何文件!')

  44. def about():
  45.     msgbox.show_info(message='版本号:v2.0\n制作者:鱼C论坛 liuhongrun2022')


  46. root = ttk.Window()
  47. root.title('PDF_to_Word2.0')
  48. root.geometry('900x100')

  49. b1 = ttk.Button(root, text="pdf批量转word", bootstyle='info-outline', command=pdf_to_words)
  50. b1.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  51. b2 = ttk.Button(root, text='pdf单文件转word', bootstyle='warning-outline', command=pdf_to_word)
  52. b2.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  53. b5 = ttk.Button(root, text='word转pdf',bootstyle='info-outline', command=word_to_pdf)
  54. b5.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  55. b3 = ttk.Button(root, text='关于', bootstyle='success-outline', command=about)
  56. b3.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  57. b4 = ttk.Button(root, text='退出',bootstyle='danger-outline', command=root.destroy)                     # 改了这行
  58. b4.pack(side=LEFT, padx=5, pady=5, fill=BOTH)

  59. l = ttk.Label(root, bootstyle='inverse-warning', text='转换中出现"未响应"为正常现象。')
  60. l.pack(side=LEFT, padx=5, pady=5, fill=BOTH)
  61. l.configure(font=('微软雅黑 Light',9))

  62. root.mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-25 02:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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