鱼C论坛

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

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

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

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

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

x
本帖最后由 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)[1] # 分离出扩展名
            if suff_name != '.pdf': # 如果不是PDF文档就退出
                continue
            file_name = os.path.splitext(file)[0] # 分离出文件名
            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)[0] + '.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)[0] + '.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()
在编辑器中可以运行!!!
请求大佬帮助!!!
最佳答案
2023-2-16 16:22:37

这个 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)[1] # 分离出扩展名
            if suff_name != '.pdf': # 如果不是PDF文档就退出
                continue
            file_name = os.path.splitext(file)[0] # 分离出文件名
            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)[0] + '.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)[0] + '.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()
1676533992917.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

这里说的是第69行的 exit 没有定义,但是你发的代码都没有 exit ,你就不能发完整代码吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 1

使用道具 举报

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

使用道具 举报

发表于 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)[1] # 分离出扩展名
            if suff_name != '.pdf': # 如果不是PDF文档就退出
                continue
            file_name = os.path.splitext(file)[0] # 分离出文件名
            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)[0] + '.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)[0] + '.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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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)[1] # 分离出扩展名
            if suff_name != '.pdf': # 如果不是PDF文档就退出
                continue
            file_name = os.path.splitext(file)[0] # 分离出文件名
            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)[0] + '.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)[0] + '.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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

是我看错了,那里说的是 exit,我改回来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

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

这个 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)[1] # 分离出扩展名
            if suff_name != '.pdf': # 如果不是PDF文档就退出
                continue
            file_name = os.path.splitext(file)[0] # 分离出文件名
            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)[0] + '.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)[0] + '.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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 15:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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