Python 3.x 如何在使用Python/Kivy构建按钮时实现线程,并为按钮按创建单独的线程

Python 3.x 如何在使用Python/Kivy构建按钮时实现线程,并为按钮按创建单独的线程,python-3.x,kivy,threadpool,python-multithreading,Python 3.x,Kivy,Threadpool,Python Multithreading,在我的类中使用Kivy构建按钮时如何实现线程 调用start in时,在buttonpress上有一个单独的线程:text=“start”,size\u hint=(SizeW,SizeH),pos\u hint={'x':.0,'y':ButtonY},on\u press=start) 或者,如果你有任何建议,这可以更好地做,或者应该如何做,我真的会很感激它,我真的很坚持这一点 from kivy.app import App from kivy.uix.button import Butt

在我的类中使用Kivy构建按钮时如何实现线程 调用start in时,在buttonpress上有一个单独的线程:
text=“start”,size\u hint=(SizeW,SizeH),pos\u hint={'x':.0,'y':ButtonY},on\u press=start)

或者,如果你有任何建议,这可以更好地做,或者应该如何做,我真的会很感激它,我真的很坚持这一点

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.floatlayout import FloatLayout
from kivy.core.window import Window
from filex import start


class Hello(FloatLayout):
    def __init__(self, **kwargs):
        super(Hello, self).__init__(**kwargs)
        Window.size = (800, 150)
        Window.clearcolor = (0, 0, 1, 1)

        # Main Buttons
        ButtonY = 0.5
        SizeH = 0.5
        SizeW = 0.33

        
        self.walk_button = Button(background_normal='image4.png',
                                  border=(0, 0, 0, 0),
                                  text="START",size_hint=(SizeW, SizeH), pos_hint={'x': .0, 'y': ButtonY}, on_press=start)
        self.help_button = Button(background_normal='image1.png',
                                  border=(0, 0, 0, 0),
                                  text="Help",  size_hint=(SizeW, SizeH), pos_hint={'x': .67, 'y': 0},on_press=self.update)
        self.go_button = Button(background_normal='image2.png',
                                border=(0, 0, 0, 0),
                                text="Go",      size_hint=(SizeW, SizeH), pos_hint={'x': .335, 'y': 0})

        self.add_widget(self.help_button)
        self.add_widget(self.go_button)
        self.add_widget(self.walk_button)
        
        self.current_text = "Default"


    def update(self,event):
        self.walk_button.text = "Changed to change"

class Example(App):


    def build(self):
        return Hello()

if __name__ == '__main__':
    x = Example();
    x.run();

您可以通过调用以下命令来使用线程:

threading.Thread(target=self.update).start()
当您的按钮启动一个需要花费大量时间运行的方法时,这是一个好主意。(重要的是您不希望GUI被阻止的任何时间长度)。但是,任何修改GUI的操作都必须在主线程上完成, 因此,您问题中的
update()
方法不适合在单独的线程中运行。如果有一个长时间运行的方法也需要修改GUI,则在单独的线程中运行该方法,但调用另一个仅使用以下方法修改GUI的方法:

Clock.schedule_once()

您可以通过调用以下命令来使用线程:

threading.Thread(target=self.update).start()
当您的按钮启动一个需要花费大量时间运行的方法时,这是一个好主意。(重要的是您不希望GUI被阻止的任何时间长度)。但是,任何修改GUI的操作都必须在主线程上完成, 因此,您问题中的
update()
方法不适合在单独的线程中运行。如果有一个长时间运行的方法也需要修改GUI,则在单独的线程中运行该方法,但调用另一个仅使用以下方法修改GUI的方法:

Clock.schedule_once()

我认为您可以通过编写少量说明相同问题的代码来改进您的问题。例如,只制作一个按钮,删除与问题代码行无关的代码。通过这种方式,可以更容易地帮助他人,也更容易让他人了解您的问题,并在此处找到答案。我认为您可以通过编写少量说明相同问题的代码来改进您的问题。例如,只制作一个按钮,删除与问题代码行无关的代码。通过这种方式,可以更容易地帮助他人,让他人了解您的问题并在此处找到答案。