我最近与Kivy和KivyMD一起制作了一个PDF合并GUI,当通过控制台运行它时,它运行得非常出色,执行“python3 main.py”,但当通过Buildozer将其转换为APK或使用Pyinstaller将其转换为EXE时,它会在启动时立即崩溃/关闭
我是这里的一个真正的傻瓜,所以我真的不知道从哪里开始解决这个问题,我真的非常感谢你的帮助,提前谢谢你!:)
from plyer import filechooser
import PyPDF2
from kivymd.app import MDApp
from kivymd.uix.button import MDRectangleFlatButton
from kivymd.uix.label import MDLabel
from kivymd.uix.screen import Screen
from kivymd.uix.textfield import MDTextFieldRound, MDTextField
from kivy.lang.builder import Builder
pdfSaveFileNameTextInput = """
MDTextField:
hint_text: "Insert name of new PDF file"
pos_hint: {'center_x': 0.5, 'center_y': 0.35}
size_hint_x: None
width: 200
"""
class PDFMergeApp(MDApp):
def build(self):
application_window = Screen()
self.theme_cls.primary_palette = "Blue"
self.theme_cls.primary_hue = "500"
self.theme_cls.theme_style = "Light"
label = MDLabel(text="Simple PDF Merger",
halign="center",
pos_hint={'center_x': 0.5, 'center_y': 0.7},
font_style="H3")
application_window.add_widget(label)
self.textInput = Builder.load_string(pdfSaveFileNameTextInput)
application_window.add_widget(self.textInput)
btn_flat = MDRectangleFlatButton(text="Merge PDFs",
pos_hint={'center_x': 0.5, 'center_y': 0.2}
)
btn_flat.bind(on_release=self.pressed)
application_window.add_widget(btn_flat)
return application_window
def pressed(self, instance):
filename = filechooser.open_file(title="Choose pdfs to merge",
multiple=True,
filters=[("PDF Files (.pdf)", "*.pdf")])
pdfOutputFileDirectory = filechooser.choose_dir()
pdfOutputFileDirectory = ''.join(pdfOutputFileDirectory)
pdfOutputFileName = self.textInput.text
pdfOutputFile = open(pdfOutputFileDirectory + "\\" + pdfOutputFileName + ".pdf",
"wb") # fd.asksaveasfile(mode='wb', defaultextension=".pdf")
pdfWriter = PyPDF2.PdfFileWriter()
for x in filename:
pdfFiles = open(x, "rb")
pdfReader = PyPDF2.PdfFileReader(pdfFiles)
for pageNum in range(pdfReader.numPages):
pageObj = pdfReader.getPage(pageNum)
pdfWriter.addPage(pageObj)
pdfWriter.write(pdfOutputFile)
self.textInput.text = ""
pdfOutputFile.close()
PDFMergeApp().run()
您应该尝试通过设置在插件中安装
kivy 2.0.0rc4
。在哪一个程序中进行编码。你的buildozer.spec
应该是这样的:出现此问题是因为您可能没有指定在kivymd/kivy项目文件中使用的第三方模块
打开buildozer.spec文件,在需求中添加PyPDF2
之后,完全删除.buildozer目录或在终端中运行buildozerandroid clean
然后再次编译:)
相关问题 更多 >
编程相关推荐