Python 2.7 基维:-加载和加载;保存不适用于pdf&;文字记录

Python 2.7 基维:-加载和加载;保存不适用于pdf&;文字记录,python-2.7,kivy,Python 2.7,Kivy,我在阅读kivy pdf文件时发现了一个加载和保存代码…该代码对.txt文件和.py文件很有效,但对.docx和.pdf文件不起作用 main.py:--- editor.kv:--- #:kivy 1.8.0 根目录: #文本输入:文本输入 盒子布局: 方向:“垂直” 盒子布局: 尺寸提示:无 身高:100 按钮: 文本:“加载” 发布时:root.show\u load() 按钮: 文本:“保存” 发布时:root.show\u save() 图片: 来源:“myimage.png” : 盒

我在阅读kivy pdf文件时发现了一个加载和保存代码…该代码对.txt文件和.py文件很有效,但对.docx和.pdf文件不起作用

main.py:---

editor.kv:---

#:kivy 1.8.0
根目录:
#文本输入:文本输入
盒子布局:
方向:“垂直”
盒子布局:
尺寸提示:无
身高:100
按钮:
文本:“加载”
发布时:root.show\u load()
按钮:
文本:“保存”
发布时:root.show\u save()
图片:
来源:“myimage.png”
:
盒子布局:
大小:root.size
pos:root.pos
方向:“垂直”
文件选择器列表视图:
id:filechooser
盒子布局:
尺寸提示:无
身高:100
按钮:
文本:“取消”
发布时:root.cancel()
按钮:
文本:“加载”
发布时:root.load(filechooser.path,filechooser.selection)
:
文本输入:文本输入
盒子布局:
大小:root.size
pos:root.pos
方向:“垂直”
文件选择器列表视图:
id:filechooser
选择时:text\u input.text=自选择和自选择[0]或“”
文本输入:
id:文本输入
尺寸提示:无
身高:100
多行:False
盒子布局:
尺寸提示:无
身高:100
按钮:
文本:“取消”
发布时:root.cancel()
按钮:
文本:“保存”
发布时:root.save(filechooser.path,text\u input.text)

我应该修改代码的哪一部分以使其适用于所有类型的文件…?

.docx
.pdf
不是基于文本的格式。您可以加载
.txt
.py
文件,因为它们是基于文本的。您所做的基本上就像尝试将
.png
作为文本加载一样-
.png
是一种二进制格式,就像
.docx
.pdf
一样

为了显示
.docx
,您需要了解文件格式并编写自己的加载程序,或者使用现有的加载程序。一个快速的谷歌搜索出现了。加载文件后,如果希望显示该文件,则需要编写自己的代码以Kivy显示该文件,或者将其转换为Kivy已经支持的格式,如reStructuredText


类似地,对于
.pdf
,谷歌发现。同样,您需要将其转换为rST或生成Kivy小部件/指令,以便自己显示文档。

.docx
.pdf
不是基于文本的格式。您可以加载
.txt
.py
文件,因为它们是基于文本的。您所做的基本上就像尝试将
.png
作为文本加载一样-
.png
是一种二进制格式,就像
.docx
.pdf
一样

为了显示
.docx
,您需要了解文件格式并编写自己的加载程序,或者使用现有的加载程序。一个快速的谷歌搜索出现了。加载文件后,如果希望显示该文件,则需要编写自己的代码以Kivy显示该文件,或者将其转换为Kivy已经支持的格式,如reStructuredText


类似地,对于
.pdf
,谷歌发现。同样,您需要将其转换为rST或生成Kivy小部件/指令,以便自己显示文档。

.docx
.pdf
不是基于文本的格式。您可以加载
.txt
.py
文件,因为它们是基于文本的。您所做的基本上就像尝试将
.png
作为文本加载一样-
.png
是一种二进制格式,就像
.docx
.pdf
一样

为了显示
.docx
,您需要了解文件格式并编写自己的加载程序,或者使用现有的加载程序。一个快速的谷歌搜索出现了。加载文件后,如果希望显示该文件,则需要编写自己的代码以Kivy显示该文件,或者将其转换为Kivy已经支持的格式,如reStructuredText


类似地,对于
.pdf
,谷歌发现。同样,您需要将其转换为rST或生成Kivy小部件/指令,以便自己显示文档。

.docx
.pdf
不是基于文本的格式。您可以加载
.txt
.py
文件,因为它们是基于文本的。您所做的基本上就像尝试将
.png
作为文本加载一样-
.png
是一种二进制格式,就像
.docx
.pdf
一样

为了显示
.docx
,您需要了解文件格式并编写自己的加载程序,或者使用现有的加载程序。一个快速的谷歌搜索出现了。加载文件后,如果希望显示该文件,则需要编写自己的代码以Kivy显示该文件,或者将其转换为Kivy已经支持的格式,如reStructuredText


类似地,对于
.pdf
,谷歌发现。同样,您需要将其转换为rST或生成Kivy小部件/说明,以便自己显示文档。

有没有办法将.docx文件转换为.txt文件,反之亦然…@RyanP@VishalParmar您可以尝试使用LibreOffice/OpenOffice转换文档。类似于
soffice--headless--convert to txt:Text YOUR-DOCUMENT-HERE.DOC
。有没有办法将.docx文件转换为.txt文件,反之亦然…@RyanP@VishalParmar您可以尝试使用LibreOffice/OpenOffice转换文档。类似于
soffice--headless--convert to txt:Text YOUR-DOCUMENT-HERE.DOC
。有没有办法将.docx文件转换为.txt文件,反之亦然…@Ry
import kivy
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.factory import Factory
from kivy.uix.label import Label
from kivy.properties import ObjectProperty
from kivy.uix.popup import Popup

import os

class LoadDialog(FloatLayout):
    load = ObjectProperty(None)
    cancel = ObjectProperty(None)


class SaveDialog(FloatLayout):
    save = ObjectProperty(None)
    #text_input = ObjectProperty(None)
    cancel = ObjectProperty(None)


class Root(FloatLayout):
    loadfile = ObjectProperty(None)
    savefile = ObjectProperty(None)
    #text_input = ObjectProperty(None)

    def dismiss_popup(self):
        self._popup.dismiss()

    def show_load(self):
        content = LoadDialog(load=self.load, cancel=self.dismiss_popup)
        print(self.load)
        self._popup = Popup(title="Load file", content=content, size_hint=(0.9, 0.9))
        self._popup.open()

    def show_save(self):
        content = SaveDialog(save=self.save, cancel=self.dismiss_popup)
        print(self.save)
        self._popup = Popup(title="Save file", content=content, size_hint=(0.9, 0.9))
        self._popup.open()


    def load(self, path, filename):

        with open(os.path.join(path, filename[0])) as stream:

            self.text = stream.read()

        self.dismiss_popup()
        self._popup = Popup(title="Load file", content=Label(text = 'File Loaded Successfully'), size_hint=(0.9, 0.9))
        self._popup.open()




    def save(self, path, filename):

        with open(os.path.join(path, filename), 'w') as stream:

            stream.write(self.text)

        self.dismiss_popup()

        self._popup = Popup(title="Save file", content=Label(text = 'File Saved Successfully'), size_hint=(0.9, 0.9))
        self._popup.open()

class Editor(App):
    pass


Factory.register('Root', cls=Root)
Factory.register('LoadDialog', cls=LoadDialog)
Factory.register('SaveDialog', cls=SaveDialog)

if __name__ == '__main__':
    Editor().run()
#:kivy 1.8.0

Root:
    #text_input: text_input

    BoxLayout:
        orientation: 'vertical'

        BoxLayout:
            size_hint_y: None
            height: 100
            Button:
                text: 'Load'
                on_release: root.show_load()
            Button:
                text: 'Save'
                on_release: root.show_save()


        Image:
            source: 'myimage.png'

<LoadDialog>:
    BoxLayout:
        size: root.size
        pos: root.pos
        orientation: "vertical"
        FileChooserListView:
            id: filechooser

        BoxLayout:
            size_hint_y: None
            height: 100
            Button:
                text: "Cancel"
                on_release: root.cancel()

            Button:
                text: "Load"
                on_release: root.load(filechooser.path, filechooser.selection)

<SaveDialog>:
    text_input: text_input
    BoxLayout:
        size: root.size
        pos: root.pos
        orientation: "vertical"
        FileChooserListView:
            id: filechooser
            on_selection: text_input.text = self.selection and self.selection[0] or ''

        TextInput:
            id: text_input
            size_hint_y: None
            height: 100
            multiline: False

        BoxLayout:
            size_hint_y: None
            height: 100
            Button:
                text: "Cancel"
                on_release: root.cancel()

            Button:
                text: "Save"
                on_release: root.save(filechooser.path, text_input.text)