Bootstrap

Python Kivy框架学习案例集锦

        Kivy是一个开源的Python GUI库,专为快速开发多点触控应用程序而设计。它具有跨平台特性,可在多种操作系统上运行,包括Windows、macOS、Linux、Android和iOS。Kivy以其强大的功能和灵活的设计,成为了开发者构建具有吸引力和交互性的用户界面的首选工具。

Kivy的特点:

  • 多点触控支持: Kivy专注于多点触控,使开发者能够创建支持手势操作的应用,适应移动设备和平板电脑。

  • 跨平台: Kivy的一大特点是跨平台性,您可以在不同的操作系统上使用相同的代码构建应用程序,大大减少了开发时间和工作量。

  • 丰富的小部件: Kivy提供了各种小部件,如按钮、标签、文本框等,帮助您轻松构建用户界面。

  • 自定义样式: 您可以通过定义样式和主题来自定义应用的外观,以满足不同的设计需求。

  • 动画和过渡效果: Kivy支持丰富的动画和过渡效果,让应用界面更加生动有趣。

  • 开放源代码: Kivy是一个开源项目,您可以自由地使用、修改和分享它。

安装Kivy库

pip install kivy

案例:

1、图片浏览器

from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.image import AsyncImage
import os

class ImageBrowserApp(App):
    def build(self):
        layout = GridLayout(cols=3)
        image_folder = 'C:\\Pictures'
        for filename in os.listdir(image_folder):
            if os.path.splitext(filename)[1] == '.png':
                image = AsyncImage(source=os.path.join(image_folder, filename))
                layout.add_widget(image)
        return layout

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

2、播放音频文件:

from kivy.app import App
from kivy.uix.button import Button
from kivy.core.audio import SoundLoader

class MyApp(App):
    def build(self):
        btn = Button(text='播放音频', size=(200, 100))
        btn.bind(on_press=self.play_sound)
        
        return btn

    def play_sound(self, instance):
        sound = SoundLoader.load('path/to/your/audiofile.mp3')
        if sound:
            sound.play()

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

3、播放视频文件:

from kivy.app import App
from kivy.uix.video import Video
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout

class MyApp(App):
    def build(self):
        layout = BoxLayout(orientation='vertical')
        video = Video(source='path/to/your/video.mp4', state='play')
        layout.add_widget(video)

        btn = Button(text='暂停/播放')
        btn.bind(on_press=lambda x: self.toggle_play(video))
        layout.add_widget(btn)

        return layout

    def toggle_play(self, video):
        if video.state == 'play':
            video.state = 'pause'
        else:
            video.state = 'play'

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

4、鼠标绘图:

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import Color, Line

class PaintWidget(Widget):
    def on_touch_down(self, touch):
        with self.canvas:
            Color(0, 0, 1)  # 蓝色
            touch.ud['line'] = Line(points=(touch.x, touch.y), width=2)

    def on_touch_move(self, touch):
        touch.ud['line'].points += [touch.x, touch.y]

class MyApp(App):
    def build(self):
        return PaintWidget()

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

5、用户、密码输入页面:

from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
 
class LoginScreen(GridLayout):
 
    def __init__(self, **kwargs):
        super(LoginScreen, self).__init__(**kwargs)
        self.cols = 2
        self.add_widget(Label(text='User Name'))
        self.username = TextInput(multiline=False)
        self.add_widget(self.username)
        self.add_widget(Label(text='password'))
        self.password = TextInput(password=True, multiline=False)
        self.add_widget(self.password)
 
class MyApp(App):
 
    def build(self):
        return LoginScreen()
 
if __name__ == '__main__':
    MyApp().run()

上述内容摘自

Python UI框架库之kivy使用详解

Python Kivy 进阶功能教程

Python Kivy 基础教程

Python编程向导:Kivy基础

;