18305177067 发表于 2023-2-16 15:11:52

将py文件封装成EXE文件后,打开后显示exit未被定义

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

py文件中代码为
import tkinter.filedialog as tf
import ttkbootstrap as ttk
from ttkbootstrap.constants import *
from ttkbootstrap.dialogs import Messagebox as msgbox
from pdf2docx import Converter
from docx2pdf import convert
import os


def pdf_to_words():
    folder = tf.askdirectory(title='选择文件夹')
    try:
      for file in os.listdir(folder):
            suff_name = os.path.splitext(file) # 分离出扩展名
            if suff_name != '.pdf': # 如果不是PDF文档就退出
                continue
            file_name = os.path.splitext(file) # 分离出文件名
            pdf_file = folder + '\\' + file
            word_file = folder + '\\' + file_name + '.docx' # 进行转义并加上扩展名
            cv = Converter(pdf_file) # 转成Word
            cv.convert(word_file)
            cv.close()
      msgbox.show_info('转换成功!')
    except FileNotFoundError:
      msgbox.show_error('你没有选择任何文件夹!')

def pdf_to_word():
    try:
      pdffile = tf.askopenfilename(title='选择PDF文档') # 选择文件
      wordfile = os.path.splitext(pdffile) + '.docx'
      cv = Converter(pdffile)
      cv.convert(wordfile)
      cv.close()
      msgbox.show_info('转换成功!')
    except FileNotFoundError:
      msgbox.show_error('你没有选择任何文件!')

def word_to_pdf():
    try:
      inputfile = tf.askopenfilename(title='选择docx文档')
      outputfile = os.path.splitext(inputfile) + '.pdf'
      f1 = open(outputfile, 'w')
      f1.close()
      convert(inputfile, outputfile)
      msgbox.show_info('转换成功!')
    except FileNotFoundError:
      msgbox.show_error('你没有选择任何文件!')

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


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

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

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

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

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

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

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

root.mainloop()
在编辑器中可以运行!!!
请求大佬帮助!!!

isdkz 发表于 2023-2-16 15:24:03

本帖最后由 isdkz 于 2023-2-16 16:02 编辑

这里说的是第69行的 exit 没有定义,但是你发的代码都没有 exit ,你就不能发完整代码吗?

liuhongrun2022 发表于 2023-2-16 15:38:46

这个程序我知道,但好像没有关于 say 的函数?

liuhongrun2022 发表于 2023-2-16 15:40:38

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

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


def pdf_to_words():
    folder = tf.askdirectory(title='选择文件夹')
    try:
      for file in os.listdir(folder):
            suff_name = os.path.splitext(file) # 分离出扩展名
            if suff_name != '.pdf': # 如果不是PDF文档就退出
                continue
            file_name = os.path.splitext(file) # 分离出文件名
            pdf_file = folder + '\\' + file
            word_file = folder + '\\' + file_name + '.docx' # 进行转义并加上扩展名
            cv = Converter(pdf_file) # 转成Word
            cv.convert(word_file)
            cv.close()
      msgbox.show_info('转换成功!')
    except FileNotFoundError:
      msgbox.show_error('你没有选择任何文件夹!')

def pdf_to_word():
    try:
      pdffile = tf.askopenfilename(title='选择PDF文档') # 选择文件
      wordfile = os.path.splitext(pdffile) + '.docx'
      cv = Converter(pdffile)
      cv.convert(wordfile)
      cv.close()
      msgbox.show_info('转换成功!')
    except FileNotFoundError:
      msgbox.show_error('你没有选择任何文件!')

def word_to_pdf():
    try:
      inputfile = tf.askopenfilename(title='选择docx文档')
      outputfile = os.path.splitext(inputfile) + '.pdf'
      f1 = open(outputfile, 'w')
      f1.close()
      convert(inputfile, outputfile)
      msgbox.show_info('转换成功!')
    except FileNotFoundError:
      msgbox.show_error('你没有选择任何文件!')

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


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

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

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

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

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

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

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

root.mainloop()

18305177067 发表于 2023-2-16 15:54:05

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

import tkinter.filedialog as tf
import ttkbootstrap as ttk
from ttkbootstrap.constants import *
from ttkbootstrap.dialogs import Messagebox as msgbox
from pdf2docx import Converter
from docx2pdf import convert
import os


def pdf_to_words():
    folder = tf.askdirectory(title='选择文件夹')
    try:
      for file in os.listdir(folder):
            suff_name = os.path.splitext(file) # 分离出扩展名
            if suff_name != '.pdf': # 如果不是PDF文档就退出
                continue
            file_name = os.path.splitext(file) # 分离出文件名
            pdf_file = folder + '\\' + file
            word_file = folder + '\\' + file_name + '.docx' # 进行转义并加上扩展名
            cv = Converter(pdf_file) # 转成Word
            cv.convert(word_file)
            cv.close()
      msgbox.show_info('转换成功!')
    except FileNotFoundError:
      msgbox.show_error('你没有选择任何文件夹!')

def pdf_to_word():
    try:
      pdffile = tf.askopenfilename(title='选择PDF文档') # 选择文件
      wordfile = os.path.splitext(pdffile) + '.docx'
      cv = Converter(pdffile)
      cv.convert(wordfile)
      cv.close()
      msgbox.show_info('转换成功!')
    except FileNotFoundError:
      msgbox.show_error('你没有选择任何文件!')

def word_to_pdf():
    try:
      inputfile = tf.askopenfilename(title='选择docx文档')
      outputfile = os.path.splitext(inputfile) + '.pdf'
      f1 = open(outputfile, 'w')
      f1.close()
      convert(inputfile, outputfile)
      msgbox.show_info('转换成功!')
    except FileNotFoundError:
      msgbox.show_error('你没有选择任何文件!')

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


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

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

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

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

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

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

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

root.mainloop()

isdkz 发表于 2023-2-16 16:02:35

liuhongrun2022 发表于 2023-2-16 15:38
这个程序我知道,但好像没有关于 say 的函数?

是我看错了,那里说的是 exit,我改回来

isdkz 发表于 2023-2-16 16:22:37

18305177067 发表于 2023-2-16 15:54


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

对代码修改如下:
import tkinter.filedialog as tf
import ttkbootstrap as ttk
from ttkbootstrap.constants import *
from ttkbootstrap.dialogs import Messagebox as msgbox
from pdf2docx import Converter
from docx2pdf import convert
import os


def pdf_to_words():
    folder = tf.askdirectory(title='选择文件夹')
    try:
      for file in os.listdir(folder):
            suff_name = os.path.splitext(file) # 分离出扩展名
            if suff_name != '.pdf': # 如果不是PDF文档就退出
                continue
            file_name = os.path.splitext(file) # 分离出文件名
            pdf_file = folder + '\\' + file
            word_file = folder + '\\' + file_name + '.docx' # 进行转义并加上扩展名
            cv = Converter(pdf_file) # 转成Word
            cv.convert(word_file)
            cv.close()
      msgbox.show_info('转换成功!')
    except FileNotFoundError:
      msgbox.show_error('你没有选择任何文件夹!')

def pdf_to_word():
    try:
      pdffile = tf.askopenfilename(title='选择PDF文档') # 选择文件
      wordfile = os.path.splitext(pdffile) + '.docx'
      cv = Converter(pdffile)
      cv.convert(wordfile)
      cv.close()
      msgbox.show_info('转换成功!')
    except FileNotFoundError:
      msgbox.show_error('你没有选择任何文件!')

def word_to_pdf():
    try:
      inputfile = tf.askopenfilename(title='选择docx文档')
      outputfile = os.path.splitext(inputfile) + '.pdf'
      f1 = open(outputfile, 'w')
      f1.close()
      convert(inputfile, outputfile)
      msgbox.show_info('转换成功!')
    except FileNotFoundError:
      msgbox.show_error('你没有选择任何文件!')

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


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

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

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

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

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

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

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

root.mainloop()
页: [1]
查看完整版本: 将py文件封装成EXE文件后,打开后显示exit未被定义