Kivy 教程

Kivy 主页

Kivy 基础知识

Kivy 入门 Kivy 下载安装和环境配置 Kivy 架构 Kivy 文件语法 Kivy 应用程序 Kivy Hello World Kivy 应用生命周期 Kivy 事件 Kivy 属性 Kivy 输入 Kivy 行为

Kivy 按钮

Kivy 按钮 Kivy 按钮事件 Kivy 按钮颜色 Kivy 按钮大小 Kivy 按钮位置 Kivy 圆形按钮 Kivy 禁用按钮 Kivy 图片按钮

Kivy 小部件

Kivy -小部件 Kivy 标签 Kivy 文本输入 Kivy 画布 Kivy 线条 Kivy 复选框 Kivy 下拉列表 Kivy 窗口 Kivy ScrollView Kivy 轮播 Kivy 滑块 Kivy 图像 Kivy 弹出窗口 Kivy 开关 Kivy 旋转器 Kivy 拆分器 Kivy 进度条 Kivy 气泡 Kivy 选项卡式面板 Kivy 散点图 Kivy 手风琴 Kivy 文件选择器 Kivy 颜色选择器 Kivy 代码输入 Kivy 模态视图 Kivy 切换按钮 Kivy 相机 Kivy 树形视图 Kivy reStructuredText Kivy 操作栏 Kivy 视频播放器 Kivy 模板视图 Kivy VKeyboard Kivy 触摸涟漪 Kivy 音频 Kivy 视频 Kivy 拼写 Kivy 效果 Kivy 输入记录器 Kivy OpenGL Kivy 文本 Kivy 文本标记 Kivy 设置

Kivy 布局

Kivy 布局 Kivy 浮动布局 Kivy 网格布局 Kivy 框布局 Kivy 堆栈布局 Kivy 锚点布局 Kivy 相对布局 Kivy 页面布局 Kivy 循环布局 Kivy 布局中的布局

Kivy 高级概念

Kivy 配置对象 Kivy Atlas Kivy 数据加载器 Kivy 缓存管理器 Kivy 控制台 Kivy 动画 Kivy MultiStroke Kivy 时钟 Kivy SVG Kivy UrlRequest Kivy 剪贴板 Kivy 工厂 Kivy 手势 Kivy 语言 Kivy 图形 Kivy 绘图 Kivy 打包 Kivy Garden Kivy 存储 Kivy 矢量 Kivy Utils Kivy Inspector 工具 Kivy 工具 Kivy 日志 Kivy 帧缓冲区

Kivy 应用程序和项目

Kivy 绘图应用程序 Kivy 计算器应用程序 Kivy 秒表应用程序 Kivy 相机处理 Kivy 图像查看器 Kivy 贝塞尔曲线 Kivy 画布应力 Kivy 圆形绘制 Kivy 小部件动画 Kivy 杂项

Kivy - 文件选择器

在 GUI 应用程序中,您经常需要从本地文件系统中选择所需的文件。Kivy 框架提供了"kivy.uix.filechooser"模块,该模块提供了用于描述、显示和浏览文件系统的各种类。

filechooser 模块中的类采用 MVC 设计。它们可以归类如下 −

  • 模型由 FileSystemAbstract 类的具体实现表示,例如 FileSystemLocal。

  • 视图由 FileChooserListLayout 和 FileChooserIconLayout 类表示。它们分别由 FileChooserListView 和 FileChooserIconView 小部件使用。

  • 控制器由 FileChooserController 的具体实现表示,即 FileChooser、FileChooserIconView 和 FileChooserListView 类。

FileChooserIconView 和 FileChooserListView 类提供了非常简单易用的小部件,它们通过两种不同的可视化表示提供对文件系统的访问,正如名称所暗示的那样。

FileChooserListView 小部件将文件和文件夹显示为垂直列表中的文本项。文件夹由其名称左侧的">"符号标识,单击可展开或折叠其文件和子文件夹。

Kivy File Chooser

FileChooserIconView 小部件显示一个文件夹图标,其下方显示名称,以及一个文件图标及其名称。

kivy FileChooserIconView

如果文件/文件夹的数量超出小部件的高度和宽度,则会附加垂直和水平滚动条。

FileChooser 视图具有以下属性 −

  • files − 应用过滤器后,由路径指定的目录中的文件列表。 files 是一个只读 ListProperty。

  • filter_dirs − 表示过滤器是否也应用于目录。filter_dirs 是一个 BooleanProperty,默认为 False。

  • filters − filters 指定要应用于目录中文件的过滤器。filters 是一个 ListProperty,默认为 []。如果为空,则相当于 '*',表示没有文件被从列表中过滤掉。路径更改时不会重置过滤器。如果需要,您需要自己执行此操作。

您可以在列表中指定以下一个或多个模式 −

Sr.No 模式列表和说明
1 *

匹配所有内容

2 ?

匹配任何单个字符

3 [seq]

匹配 seq 中的任何字符

4 [!seq]

匹配 seq 之外的任何字符

两个视图都会引发 on_selection 事件,回调可以绑定到该事件。生成此事件时,如果选择了文件夹,它将展开或折叠该文件夹。如果选择了文件,则将其名称传递给回调。

ListView 示例

在第一个示例中,我们使用 FileChhoserListView 小部件和垂直框布局中的标签构建 App 窗口。

为此目的使用以下"kv"文件脚本。select() 方法绑定到视图的"on_selection"事件。

<Filechooser>:
   label: label
   orientation: 'vertical'
   BoxLayout:
      FileChooserListView:
         canvas.before:
            Color:
               rgb: .4, .5, .5
            Rectangle:
               pos: self.pos
               size: self.size
         on_selection: root.select(*args)

   Label:
      id: label
      size_hint_y: .1
      canvas.before:
         Color:
            rgb: .5, .5, .4
         Rectangle:
            pos: self.pos
            size: self.size

请注意使用 FileChooseListView 和 Label 小部件的画布对象来提供背景颜色。

Kivy Application 类代码如下−

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.core.window import Window

Window.size = (720,400)

class Filechooser(BoxLayout):
   def select(self, *args):
      try: self.label.text = args[1][0]
      except: pass
      
class FileDemoApp(App):
   def build(self):
      return Filechooser()
if __name__ == '__main__':
   FileDemoApp().run()

输出

运行上述代码后,您将获得文件/文件夹列表。文件的名称及其完整路径显示在标签上。

Kivy 文件完整路径

IconView 示例

我们现在展示 FileChooserIconView 的使用。它被放置在一个水平框中,旁边还有一个图像小部件。虽然 FileChooserIconView 的大部分配置与上一个示例相同,但我们添加了 filters 属性以将文件的显示限制为仅 png 文件。

<Filechooser>:
   img: img
   orientation: 'horizontal'
   BoxLayout:
      FileChooserIconView:
      filters: ['*.png']
         canvas.before:
            Color:
               rgb: .5, .4, .5
            Rectangle:
               pos: self.pos
               size: self.size
         on_selection: root.select(*args)
   
   Image:
      id: img
      source:""

由于我们想要显示选定的图像,因此 select() 方法被更改,以便将选定的文件分配给 Image 对象的 source 属性。

class Filechooser(BoxLayout):
   def select(self, *args):
      try:
         self.img.source = args[1][0]
      except:
         print ('error')
         
class FileIconApp(App):
   def build(self):
      return Filechooser()

# run the App
if __name__ == '__main__':
   FileIconApp().run()

输出

运行该程序并浏览至所需的图像文件。 选定的图像将显示在右侧。

Kivy 文件选择图片