- 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 - 滾動檢視
- 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 - 虛擬鍵盤
- 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 - 圖集
- Kivy - 資料載入器
- Kivy - 快取管理器
- Kivy - 控制檯
- Kivy - 動畫
- Kivy - 多筆畫
- Kivy - 時鐘
- Kivy - SVG
- Kivy - UrlRequest
- Kivy - 剪貼簿
- Kivy - 工廠
- Kivy - 手勢
- Kivy - 語言
- Kivy - 圖形
- Kivy - 繪製
- Kivy - 打包
- Kivy - Garden
- Kivy - 儲存
- Kivy - 向量
- Kivy - 工具函式
- Kivy - 檢查器
- Kivy - 工具
- Kivy - 日誌記錄器
- Kivy - 幀緩衝區
- Kivy 應用和專案
- Kivy - 繪圖應用
- Kivy - 計算器應用
- Kivy - 計時器應用
- Kivy - 相機處理
- Kivy - 圖片檢視器
- Kivy - 貝塞爾曲線
- Kivy - 畫布壓力測試
- Kivy - 圓形繪製
- Kivy - 元件動畫
- Kivy - 其他
- Kivy 有用資源
- Kivy - 快速指南
- Kivy - 有用資源
- Kivy - 討論
Kivy - 圖片
能夠顯示圖片是任何GUI應用程式的基本要求。Kivy框架包含Image元件作為影像容器。它能夠載入來自png、jpg和GIF檔案的影像資料。對於SVG檔案,你可能需要使用名為Svg的另一個元件。
Kivy包含兩個影像元件——Image和AsyncImage。它們定義在"kivy.uix.image"模組中。
Image元件用於載入本地機器上可用的影像檔案。
from kivy.uix.image import Image img = Image(source = 'logo.png')
要從任何外部來源載入影像,你需要使用AsyncImage元件。AsyncImage類是Image類的子類。
from kivy.uix.image import AsyncImage img = AsyncImage(source = 'http://xyz.com/logo.png')
如果你需要透過從URL檢索影像來顯示它們,AsyncImage會在後臺執行緒中執行此操作,而不會阻塞你的應用程式。
Image類定義了以下屬性:
source - 影像的檔名/來源。source是一個StringProperty,預設為None。
fit_mode - 如果影像的大小與元件的大小不同,此屬性決定如何調整影像大小以適應元件框。
可用選項
scale-down - 對於大於Image元件尺寸的影像,影像將縮小以適應元件框,保持其縱橫比且不會拉伸。如果影像的大小小於元件,它將以其原始大小顯示。
fill - 影像會被拉伸以填充元件,而不管其縱橫比或尺寸如何。如果影像的縱橫比與元件不同,此選項可能會導致影像變形。
contain - 影像將調整大小以適應元件框,保持其縱橫比。如果影像大小大於元件大小,行為將類似於“scale-down”。但是,如果影像大小小於元件大小,與“scale-down”不同,影像將調整大小以適應元件。
cover - 影像將水平或垂直拉伸以填充元件框,保持其縱橫比。如果影像的縱橫比與元件不同,則影像將被裁剪以適應。
texture - 影像的紋理物件。紋理表示原始載入的影像紋理。根據fit_mode屬性,它在渲染期間被拉伸和定位。
texture_size - 影像的紋理大小。這表示原始載入的影像紋理大小。
color - 影像顏色,格式為(r, g, b, a)。此屬性可用於“著色”影像。但是,如果源影像不是灰色/白色,則顏色不會按預期工作。
image_ratio - 一個只讀屬性,返回影像的比例(寬度/高度)。
reload() - 從磁碟重新載入影像。這有助於在影像內容更改時從磁碟重新載入影像。
img = Image(source = '1.jpg') img.reload()
示例
在下面的示例程式碼中,我們主要嘗試演示fit_mode屬性的效果。下面是一個“kv”語言指令碼,它在輪播元件中顯示不同的影像。每個影像都有不同的fit_mode屬性值。
“kv”語言指令碼如下:
Carousel:
direction:'top'
Image:
source:'1.png'
fit_mode:"scale-down"
Image:
source:"TPlogo.png"
fit_mode:"contain"
Image:
source:"TPlogo.png"
fit_mode:"fill"
Image:
source:"TPlogo.png"
fit_mode:"cover"
輸出
在Kivy App類中載入此指令碼並執行後,將根據各自的fit_mode顯示不同的影像:
fit_mode = scaled-down
源影像大於Image元件。
fit_mode=contain
源影像小於Image元件。
fit_mode: fill
影像調整大小以適應而不丟失縱橫比。
fill_mode=cover
影像被拉伸以覆蓋整個元件區域。