如何将 MDProgressbar 绑定到 kivymd 中的进程?

问题描述

我正在尝试将 MDProgressbar 绑定到我的视频进程的视频合并,我正在使用 moviepy 库来做到这一点。 目的是指示我的视频合并文件的合并进度。 我想用它来了解我的应用程序的运行进度,但是当我运行文件时,整个程序将冻结并且进度条根本不会移动。 任何帮助将不胜感激。

下面是我的python文件

from kivy.lang import Builder
from kivymd.app import MDApp
from kivy.uix.screenmanager import Screen
from kivy.core.window import Window
from kivymd.uix.filemanager import MDFileManager
from kivymd.toast import toast
from moviepy.editor import VideoFileClip,concatenate_videoclips,CompositeVideoClip

Window.size = (350,600)

class KudosApp(MDApp):
    def build(self):
        self.theme_cls.theme_style = "Light"
        #self.theme_cls.accent_palette = "Red"
        return Builder.load_file("Merge.kv")

def Kfile(self):
    self.file_manager =  MDFileManager(
        exit_manager= self.exit_manager,select_path = self.select_path,)
    
    self.file_manager.show('/')
    self.file_manager.ext = [".mp4",".avi"]


def merge2(self):
    word = self.root.ids.field1.text
    word2 = self.root.ids.field2.text

    clip1 = VideoFileClip(word)
    clip2 = VideoFileClip(word2)
    clip = concatenate_videoclips([clip1,clip2])
    clip = clip.write_videofile("Kivy.mp4",logger= None)

    self.root.ids.my_progress.value = clip
    clip += 1
    self.root.ids.my_progress.value = clip

def file_manager_open(self):
    self.file_manager.show('/')  # output manager to the screen
    self.manager_open = True

def select_path(self,path):
    '''It will be called when you click on the file name or the catalog selection button.
    :type path: str;
    :param path: path to the selected directory or file;
    '''
    self.exit_manager()
    if self.root.ids.field1.text == '':
        self.root.ids.field1.text = path
    else:
        self.root.ids.field2.text = path

    toast(path)

def exit_manager(self,*args):
    '''Called when the user reaches the root of the directory tree.'''
    self.manager_open = False
    self.file_manager.close()       

KudosApp().run()

下面还有 my.kv 文件

Screen:
    
    canvas.before:
        Color:
            rgba: (1,1,1)
        Rectangle:
            pos: self.pos
            size: self.size

    MDRaisedButton:
        id: Button1
        text: 'browse file 1'
        pos_hint: {'center_x': 0.5,'center_y': 0.8}
        font_size: 20
        line_color: 0,1
        md_bg_color: 0,1
        on_press: app.Kfile()

    MDTextField: 
        id: field1
        pos_hint: {'center_x': .5,'center_y': .7} 
        size_hint_x: None 
        width: "200dp" 
        hint_text: "filepath" 



    MDRaisedButton:
        id: Button2
        text: 'browse file 2'
        pos_hint: {'center_x': 0.5,'center_y': 0.5}
        font_size: 20
        line_color: 0,1
        on_press: app.Kfile()

    MDTextField: 
        id: field2 
        pos_hint: {'center_x': .5,'center_y': .4} 
        size_hint_x: None 
        width: "200dp"
        hint_text: "filepath"

    MDRaisedButton:
        id: Button3
        text: 'Merge'
        pos_hint: {'center_x': 0.5,'center_y': 0.2}
        font_size: 20
        line_color: 0,1
        md_bg_color: 1,1
        on_press: app.merge()

    MDBoxLayout:
        MDProgressBar:
            id: my_progress
            value: 0
            min:0
            max: 100
            pos_hint:{'center_x': 0.5,'center_y': 0.1}
            size_hint_x: 0.8

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...