python - 如何加载文件选择器对话框

标签 python kivy kivy-language

我是一个 Kivy 新手,尽管已经阅读了几本书、大量的 Kivy 文档,并且查看了许多示例,但我在弄清楚如何构建我的程序时仍然遇到了很大的困难。我正在尝试让文件选择器对话框正常工作。

我想从一个带有单个按钮的简单 BoxLayout 界面开始。按下此按钮后,我想显示文件选择器对话框。我从其中一本书中获取了很多这样的代码。我的问题是如何调用 LoadDialog 小部件/类。我知道我的按钮不应该引用 root.show_load_list() 但我不确定应该如何引用它。如果能在正确的方向上插入我,我将不胜感激。

# File name: main.py
from kivy.app import App

from kivy.uix.floatlayout import FloatLayout
from kivy.properties import ObjectProperty
from kivy.lang import Builder


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

    def show_load_list(self):
        content = LoadDialog(load=self.load_list, cancel=self.dismiss_popup)
        self._popup = Popup(title="Load a file list", content=content, size_hint=(1, 1))
        self._popup.open()

    def load_list(self, path, filename):
        pass

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

class LoadDialogApp(App):
    pass

if __name__ == '__main__':
    LoadDialogApp().run()

我的 kv 文件定义为

# File name: loaddialog.kv

BoxLayout:
    Button:
        text: "Click me"
        on_release: root.show_load_list()

<LoadDialog>:
    BoxLayout:
        size: root.size
        pos: root.pos
        orientation: "vertical"
        FileChooserListView:
            id: filechooser
            path: './'
        BoxLayout:
            size_hint_y: None
            height: 30
            Button:
                text: "Cancel"
                on_release: root.cancel()
            Button:
                text: "Load"
                on_release: root.load(filechooser.path, filechooser.selection)

最佳答案

Python 代码

  1. 添加缺少的导入语句,from kivy.uix.popup import Popup
  2. 将类 LoadDialog 重命名为 Root
  3. 添加一个只有两个 ObjectProperty 的 LoadDialog 类

代码片段

from kivy.uix.popup import Popup


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


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

    def show_load_list(self):

kv 文件

  1. BoxLayout: 之前添加根规则,Root:

代码片段

Root:
    BoxLayout:
        Button:
            text: "Click me"
            on_release: root.show_load_list()

<LoadDialog>:
    BoxLayout:

输出

Img01

关于python - 如何加载文件选择器对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51833438/

相关文章:

python - 名称错误 : Factory name not defined - Kivy

python - 如何在 .kv 文件中使用 if 语句

python - 图像的轮廓图给出 : TypeError Input must be 2D array error

python - Kivy - UI 上的标签未更新

python - 当我使用屏幕管理器 : kivy. uix.screenmanager.ScreenManagerException: No Screen with name "display"时,出现此错误

python - Kivy 从代码中选择 ListView 中的一个项目

python - 是否有任何内置的 lambda for is notNone in python

c# - 使用 Python.Net 自动化 Microsoft word

python - 在 Jupyter Notebook 中调试 Flask 服务器

Python/kivy - 类型错误 : 'kivy.properties.ObjectProperty' object is not iterable